2013-03-05 4 views
2

Suite sont les lignes de mon code en C:errno étendu dans LDAP

ldap_bind_s(ld, root_dn, root_pw, auth_method) != LDAP_SUCCESS 

ldap_perror(ld, "ldap_bind");//to print the EXACT error like 525,52e 

Lorsqu'il est exécuté

Project ./a.out CN=username,OU=ABC,DC=example,DC=com wrong-pasword 
    ldap_bind: Invalid credentials (49) 
    additional info: 80090308: LdapErr: DSID-0C090334, comment: 
AcceptSecurityContext  error, data 52e, vece 

Voici la chaîne 52e après des données représente l'erreur étendue. Quelqu'un peut-il suggérer comment accéder directement à cette erreur étendue? Actuellement, j'analyse la chaîne pour extraire cette valeur. Normalement, lorsque j'imprime LDAP_OPT_ERROR_NUMBER, il n'en renvoie que 49 (INVALID_CREDENTIALS) mais cela ne me suffit pas. Comment puis-je obtenir le code (code uniquement) de l'erreur étendue.
J'ai même essayé d'imprimer ld-> ld_errno mais cela ne me le permet pas car aucune mémoire n'a été allouée à ld.

Répondre

2

Vous avez à analyser la chaîne d'erreur afin d'en extraire le numéro d'erreur, que vous ne pouvez pas voir le code d'erreur de la structure LDAP, car il est opaque datatype et vous pouvez élément accéder à des LDAP structure que par routines qui peut voir le incomplète définition de la structure.