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: