不考虑LDAP过滤器

时间:2010-03-09 20:05:47

标签: c ldap

我正在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))

非常感谢任何帮助。 瑞奇。

3 个答案:

答案 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=*)'
相关问题