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

(ITS#6582) API C : freeze of the function "ldap_modify_ext_s"



Full_Name: Philippe EYCHART
Version: last
OS: GNU-Linux
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (123.50.75.139)


Hi,

I have done an error in my program (I know, it's bad ;-) but, according to me,
the reponse of the LDAP API C (function: ldap_modify_ext_s) is not appropriate:

I've tried to create a new attribute in an existing LDAPEntry (attribute
"userPassword"), but with  ... no attribute value!


Program trace, stopped on this break point:
   ...
-> m_errNo = ldap_modify_ext_s ( m_desc, (*m_entryIn)->getIdentifier().c_str(),
tmpMods, NULL, NULL );
   this->freeMemory ( tmpMods );
   ...

At this point, the debugger shows:
Function Arguments
 m_desc = (LDAP *) 0x991820
 *m_desc
    ...
    ld_errno = 0
    ld_error = 0
    ...
 (*(this->m_entryIn))->getIdentifier().c_str() = 0xb92968
"dc=accounts,dc=mydomain",,
 *tmpMods[0]
    mod_op = 128
    mod_type = 0xa4dc50 "userPassword"
    mod_vals
        modv_strvals = 0x0
        modv_bvals = 0x0
 tmpMods[1] = (LDAPMod *) 0x0

So, there is actually (in "LDAPMod*[]" parameter) a null terminated array of
"ldapmod" structures with only one structure defined, a structure where
"mod_vals" is empty ...

Resultat: when this line (m_errNo = ldap_modify_ext_s...) is executed, no error
is returned ; in fact, the program never returns !...

Regards.
Philippe EYCHART
<http://home.gna.org/ldapcppei/Frontends/Howto-5.fr.html>