diff --git a/libraries/libldap/controls.c b/libraries/libldap/controls.c
index 059dc5266f268d434d1369dda5f3fcbec5a05a71..48c29a5473ca05dfeba4e29dd65720bff6e80a8c 100644
--- a/libraries/libldap/controls.c
+++ b/libraries/libldap/controls.c
@@ -337,7 +337,7 @@ ldap_control_dup( const LDAPControl *c )
 {
 	LDAPControl *new;
 
-	if ( c == NULL ) {
+	if ( c == NULL || c->ldctl_oid == NULL ) {
 		return NULL;
 	}
 
@@ -347,17 +347,11 @@ ldap_control_dup( const LDAPControl *c )
 		return NULL;
 	}
 
-	if( c->ldctl_oid != NULL ) {
-		new->ldctl_oid = LDAP_STRDUP( c->ldctl_oid );
+	new->ldctl_oid = LDAP_STRDUP( c->ldctl_oid );
 
-		if(new->ldctl_oid == NULL) {
-			LDAP_FREE( new );
-			return NULL;
-		}
-
-	} else {
-		/* FIXME: how can a control have null OID? */
-		new->ldctl_oid = NULL;
+	if(new->ldctl_oid == NULL) {
+		LDAP_FREE( new );
+		return NULL;
 	}
 
 	if( c->ldctl_value.bv_val != NULL ) {