diff --git a/libraries/libldap/options.c b/libraries/libldap/options.c index 6468f9166c3ae8a45f649f6f0053d9d1fbfb89be..b1c2fb66b67a01c13233cfbbd681379e89144608 100644 --- a/libraries/libldap/options.c +++ b/libraries/libldap/options.c @@ -316,12 +316,6 @@ ldap_set_option( case LDAP_OPT_ERROR_NUMBER: { int err = * (int *) invalue; - if (err != 0 ) { - /* not supported */ - /* we only allow ld_errno to be cleared. */ - break; - } - if(ld == NULL) { /* need a struct ldap */ break; @@ -333,18 +327,16 @@ ldap_set_option( case LDAP_OPT_ERROR_STRING: { char* err = * (char **) invalue; - if (err != NULL ) { - /* not supported */ - /* we only allow ld_error to be cleared. */ - break; - } - if(ld == NULL) { /* need a struct ldap */ break; } - ld->ld_error = err; + if( ld->ld_error ) { + free(ld->ld_error); + } + + ld->ld_error = strdup(err); } return 0; case LDAP_OPT_API_FEATURE_INFO: