diff --git a/libraries/libldap/url.c b/libraries/libldap/url.c
index 97b01b8aae..aa5b27645f 100644
--- a/libraries/libldap/url.c
+++ b/libraries/libldap/url.c
@@ -161,7 +161,7 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
 
 	LDAPURLDesc	*ludp;
 	char	*p, *q;
-	int		enclosed, ldaps;
+	int		i, enclosed, ldaps;
 	const char *url_tmp;
 	char *url;
 
@@ -402,6 +402,17 @@ ldap_url_parse( LDAP_CONST char *url_in, LDAPURLDesc **ludpp )
 		return LDAP_URL_ERR_BADEXTS;
 	}
 
+	for( i=0; ludp->lud_exts[i] != NULL; i++ ) {
+		hex_unescape( ludp->lud_exts[i] );
+	}
+
+	if( i == 0 ) {
+		ldap_charray_free( ludp->lud_exts );
+		LDAP_FREE( url );
+		ldap_free_urldesc( ludp );
+		return LDAP_URL_ERR_BADEXTS;
+	}
+
 	*ludpp = ludp;
 
 	LDAP_FREE( url );