]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/schema_prep.c
Sync with HEAD
[openldap] / servers / slapd / schema_prep.c
index 2835e2a93ed53879b2587e00cfa97efbaa803e36..9ebb77a1e8724e2a75dc9b67ac49fc512ba44b35 100644 (file)
@@ -57,31 +57,26 @@ oidValidate(
                }
 
        } else {
+               int sep = 0;
                while( OID_LEADCHAR( val.bv_val[0] ) ) {
-                       if ( val.bv_len == 1 ) {
-                               return LDAP_SUCCESS;
-                       }
-
-                       if ( val.bv_val[0] == '0' ) {
-                               break;
-                       }
-
                        val.bv_val++;
                        val.bv_len--;
 
-                       while ( OID_LEADCHAR( val.bv_val[0] )) {
-                               val.bv_val++;
-                               val.bv_len--;
-
-                               if ( val.bv_len == 0 ) {
-                                       return LDAP_SUCCESS;
+                       if ( val.bv_val[-1] != '0' ) {
+                               while ( OID_LEADCHAR( val.bv_val[0] )) {
+                                       val.bv_val++;
+                                       val.bv_len--;
                                }
                        }
 
-                       if( !OID_SEPARATOR( val.bv_val[0] )) {
-                               break;
+                       if( val.bv_len == 0 ) {
+                               if( sep == 0 ) break;
+                               return LDAP_SUCCESS;
                        }
 
+                       if( !OID_SEPARATOR( val.bv_val[0] )) break;
+
+                       sep++;
                        val.bv_val++;
                        val.bv_len--;
                }