gpt4 book ai didi

c++ - LDAP 连接 ldap_sasl_bind_s 给出断言

转载 作者:行者123 更新时间:2023-11-30 18:03:30 25 4
gpt4 key购买 nike

所以我正在 Red Hat 5.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 的人是否看到任何明显的错误或以前见过此问题。

谢谢

最佳答案

我在 Red Hat 6 上链接 OpenLDAP libldap.so 和 Oracle 的客户端库 libclntsh.so 时遇到了这个问题,其中嵌入了一个 Oracle 实现C LDAP API。

问题是 OpenLDAP libldap.so 需要库 liblber.so,如果您没有显式链接到它,这些符号将由 解析libclntsh.so,因此不兼容。

修复方法是将 -llber 添加到链接器行中。

注意:在 Red Hat 7 上,错误有所不同,您会收到 -3 (LDAP_ENCODING_ERROR)“编码错误”。

关于c++ - LDAP 连接 ldap_sasl_bind_s 给出断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com