因此,我正在Red Hat5.5上开发一个LDAP应用程序。
我以前没有做过LDAP,所以我边走边读文档。我使用的是OpenLDAP 2.3版
我的源代码如下所示:
LDAP * ld;
int version=LDAP_VERSION3;
int retVal;
berval creds;
berval *serverCreds;
retVal= ldap_initialize(&ld,"ldap://myhost"); //myhost is an actual hostname.
if(retVal !=0)
{
    aWarning() << "Could not connect to host:" << hostname;
}
ldap_set_option(ld,LDAP_OPT_PROTOCOL_VERSION,&version);
creds.bv_val = "magic";  //These don't matter since I'm not using a cred mechanism.
creds.bv_len = strlen("magic");
cout << ldap_sasl_bind_s(ld,"uid=username, ou=groupname",NULL,&creds,NULL,NULL,servercred);
}我一直在遵循我能在这里找到的c/c++ LDAP实现的仅有的一个示例:
http://www-archive.mozilla.org/directory/csdk-docs/sasl.htm
但是当我运行这段代码时,我得到了以下错误:
 ../../../libraries/libldap/sasl.c:108: ldap_sasl_bind: Assertion '((ber)->ber_opts.lbo_valid==0x2)' failed.基于我自己的一些研究,我认为这似乎是较新版本的某种内存故障:
http://sourceforge.net/mailarchive/forum.php?thread_name=9F7FA2E0294A934CA0CD9E97BD580F840A801834%40CCS-EXCHANGE1.brynmill.swan.ac.uk&forum_name=vufind-tech
我很好奇是否有熟悉LDAP的人看到任何明显的错误,或者以前见过这个问题。
谢谢
发布于 2011-12-17 01:01:33
修复的问题:似乎我们的系统管理员做了不正确的LDAP安装和我们的库,我们的libldap.so和liblber.so在不同的版本。它们链接得很好,但它在运行时造成了一些不兼容,从而导致了断言。
我还没有完成绑定的工作,因为现在我收到了一个“无法联系LDAP服务器”的错误,但我将这个错误标记为已回答,因为我确实修复了断言问题。
https://stackoverflow.com/questions/8421880
复制相似问题