mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
Config should presrve OID macros in attr syntax field as well
This commit is contained in:
parent
ce4c7b0c55
commit
b13d108686
@ -288,6 +288,10 @@ at_clean( AttributeType *a )
|
||||
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;
|
||||
@ -590,6 +594,7 @@ at_add(
|
||||
int code = LDAP_SUCCESS;
|
||||
char *cname = NULL;
|
||||
char *oidm = NULL;
|
||||
char *soidm = NULL;
|
||||
|
||||
if ( !at->at_oid ) {
|
||||
*err = "";
|
||||
@ -622,7 +627,7 @@ at_add(
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -673,6 +678,7 @@ at_add(
|
||||
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 ) {
|
||||
@ -979,9 +985,12 @@ at_unparse( BerVarray *res, AttributeType *start, AttributeType *end, int sys )
|
||||
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;
|
||||
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;
|
||||
|
@ -680,7 +680,8 @@ struct AttributeType {
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user