我正在C中执行LDAP搜索查询,如此;
ldap_search_ext_s(ld, BASEDN, SCOPE, FILTER, attrs, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &res);
我的搜索效果很好,除非我尝试指定FILTER;
#define FILTER "uid=*"
,也就是说,当我尝试使用uid搜索所有LDAP条目时。
不幸的是,我的代码只返回它找到的每个结果的第一个条目。因此,我的代码可能会找到50个结果,但会返回第一个条目50次。
有人怀疑我在这里做错了吗?
编辑:我正在踩过我的结果:
for (msg = ldap_first_message(ld, res); msg != NULL; msg = ldap_next_message(ld, msg))
非常感谢任何帮助。 瑞奇。
答案 0 :(得分:1)
你是如何踩到结果的?你的代码应该是这样的:
LDAPMessage *entry;
for (entry = ldap_first_entry(ld, res); entry != NULL; entry = ldap_next_entry(ld, entry)
{
/* Examine "entry" */
}
请务必确保您将entry
传递给ldap_next_entry
,而不是res
。
答案 1 :(得分:1)
对不起大家。我的一个朋友指出我应该将msg
传递给ldap_first_entry
命令等。这解决了问题并单独返回每个结果。
感谢您的帮助。 瑞奇。
答案 2 :(得分:0)
您是否在使用时检查了查询是否按预期工作,例如命令行搜索工具(假设您有OpenLDAP实用程序可用)?
ldapsearch -b BASEDN '(uid=*)'