]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/oc.c
error message from be_entry_put tool backend function
[openldap] / servers / slapd / oc.c
index 083034d2743b60ae6919d8d46189c1883d823cb2..c2ba69013df2c18d05162c54a4d27a1fecd2466a 100644 (file)
@@ -1,7 +1,7 @@
 /* oc.c - object class routines */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -389,6 +389,19 @@ oc_add(
                }
        }
 
+       if ( !OID_LEADCHAR( oc->oc_oid[0] )) {
+               /* Expand OID macros */
+               char *oid = oidm_find( oc->oc_oid );
+               if ( !oid ) {
+                       *err = oc->oc_oid;
+                       return SLAP_SCHERR_OIDM;
+               }
+               if ( oid != oc->oc_oid ) {
+                       ldap_memfree( oc->oc_oid );
+                       oc->oc_oid = oid;
+               }
+       }
+
        soc = (ObjectClass *) ch_calloc( 1, sizeof(ObjectClass) );
        AC_MEMCPY( &soc->soc_oclass, oc, sizeof(LDAPObjectClass) );