ldap_memfree( a->sat_oidmacro );
a->sat_oidmacro = NULL;
}
+ if ( a->sat_soidmacro ) {
+ ldap_memfree( a->sat_soidmacro );
+ a->sat_soidmacro = NULL;
+ }
if ( a->sat_subtypes ) {
ldap_memfree( a->sat_subtypes );
a->sat_subtypes = NULL;
int code = LDAP_SUCCESS;
char *cname = NULL;
char *oidm = NULL;
+ char *soidm = NULL;
if ( !at->at_oid ) {
*err = "";
goto error_return;
}
if ( oid != at->at_syntax_oid ) {
- ldap_memfree( at->at_syntax_oid );
+ soidm = at->at_syntax_oid;
at->at_syntax_oid = oid;
}
}
sat->sat_cname.bv_val = cname;
sat->sat_cname.bv_len = strlen( cname );
sat->sat_oidmacro = oidm;
+ sat->sat_soidmacro = soidm;
ldap_pvt_thread_mutex_init(&sat->sat_ad_mutex);
if ( at->at_sup_oid ) {
for ( at=start; at; at=LDAP_STAILQ_NEXT(at, sat_next)) {
LDAPAttributeType lat, *latp;
if ( sys && !(at->sat_flags & SLAP_AT_HARDCODE)) break;
- if ( at->sat_oidmacro ) {
+ if ( at->sat_oidmacro || at->sat_soidmacro ) {
lat = at->sat_atype;
- lat.at_oid = at->sat_oidmacro;
+ if ( at->sat_oidmacro )
+ lat.at_oid = at->sat_oidmacro;
+ if ( at->sat_soidmacro )
+ lat.at_syntax_oid = at->sat_soidmacro;
latp = ⪫
} else {
latp = &at->sat_atype;
Syntax *sat_syntax;
AttributeTypeSchemaCheckFN *sat_check;
- char *sat_oidmacro;
+ char *sat_oidmacro; /* attribute OID */
+ char *sat_soidmacro; /* syntax OID */
#define SLAP_AT_NONE 0x0000U
#define SLAP_AT_ABSTRACT 0x0100U /* cannot be instantiated */