]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/at.c
fix ITS#3753
[openldap] / servers / slapd / at.c
index 75f2e11b8336b80ade121e31233f661c8202188b..14ed55b749c779902a5ddbb20865fefa50fc3e8b 100644 (file)
@@ -335,6 +335,7 @@ at_insert(
                        *err = sat->sat_oid;
 
                        old_sat = at_bvfind( &air->air_name );
+                       assert( old_sat != NULL );
                        rc = at_check_dup( old_sat, sat );
 
                        ldap_memfree( air );
@@ -362,6 +363,7 @@ at_insert(
                                *err = *names;
 
                                old_sat = at_bvfind( &air->air_name );
+                               assert( old_sat != NULL );
                                rc = at_check_dup( old_sat, sat );
 
                                ldap_memfree(air);
@@ -517,9 +519,16 @@ at_add(
        if ( sat->sat_extensions ) {
                for (i=0; sat->sat_extensions[i]; i++) {
                        if (!strcasecmp( sat->sat_extensions[i]->lsei_name,
-                               "X-ORDERED" )) {
-                               sat->sat_flags |= SLAP_AT_ORDERED;
-                               break;
+                               "X-ORDERED" ) && sat->sat_extensions[i]->lsei_values ) {
+                               if ( !strcasecmp( sat->sat_extensions[i]->lsei_values[0],
+                                       "VALUES" )) {
+                                       sat->sat_flags |= SLAP_AT_ORDERED_VAL;
+                                       break;
+                               } else if ( !strcasecmp( sat->sat_extensions[i]->lsei_values[0],
+                                       "SIBLINGS" )) {
+                                       sat->sat_flags |= SLAP_AT_ORDERED_SIB;
+                                       break;
+                               }
                        }
                }
        }