[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: querry on ldap_search_s()



> 
>                                               Placed At :
> 
> 
> Hi All,
> 
> Will  the function   ldap_search_s()  return LDAP_SUCCESS even when the search
> does not match the filter specifed ???

A search is successful if there are no errors. No entries matching
the filter is still a successful operation

> 
> I have pasted below a part of my code and its output
> 
> *****************************************************************************************************
> printf("filter : %s\n", filter);
> printf("basedn : %s\n", basedn);
> ret = ldap_search_s(ld, basedn, LDAP_SCOPE_SUBTREE, filter, fields, 0, &res);
> ldap_perror(ld, "ldap_search_s:");
>  free(basedn);
>  free(filter);
>  if (ret != LDAP_SUCCESS)
>  {
>           *status = -10;
>             return NULL;
>  }

you should call ldap_count_entries() BEFORE ldap_first_entry(); however
ldap_first_entry() should return NULL if no entries are available.

>  msg = ldap_first_entry(ld, res);
>  ldap_perror(ld, "ldap_firs_entryt:");
>  ret = ldap_count_entries(ld, msg);
>  ldap_perror_entries(ld, "ldap_count:");
>   printf("count : %d\n", ret);
>   subtree = ldap_get_dn(ld, msg);

You're likely asking the dn out of a NULL msg -> invalid data.

>   ldap_perror(ld, "ldap_get_dn:");
> 
> ***********************************************************************************************************
> output :
> 
> filter : (&(objectclass=xyzUser)(uid=not_in_ldap))
> basedn : o=xyz
> ldap_search:: Success
> ldap_first:: Success
> ldap_count_entries:: Success
> count : 0
> ldap_get_dn:: Bad parameter to an ldap routine
> 
> *****************************************************************************************************************
> 
> Here i have "o=xyz" as the root DN ,  "ou=south,o=xyz" and "ou=north,o=xyz" as
> the subtrees, and then  uid's in the object class "xyzUser" under these
> subtrees.
> 
> Since both ldap_search_s() and ldap_first_entry() returns a success , only way i
> can check if a uid exist is by the function ldap_count_entries().
> 
> I this the way to do it or am i going wrong somewhere ??
> 
> Waiting for replies
> Thanks in advance.
> 
> Regards
> Susanth
> 
> 
> 
> 
> 
> 
>