mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-23 14:09:39 +08:00
ITS#10076 suffixmassage in back-asyncmeta does not handle empty remote suffix correctly
This commit is contained in:
parent
4b7b2172d9
commit
6cbcfa0af3
@ -197,16 +197,26 @@ ignore:
|
||||
}
|
||||
|
||||
/* DN longer than our suffix and doesn't match */
|
||||
if ( diff > 0 && !DN_SEPARATOR(dn->bv_val[diff-1]))
|
||||
if ( osuff->bv_len != 0 && diff > 0 && !DN_SEPARATOR(dn->bv_val[diff-1]) )
|
||||
goto ignore;
|
||||
|
||||
/* suffix is same length as ours, but doesn't match */
|
||||
if ( strcasecmp( osuff->bv_val, &dn->bv_val[diff] ))
|
||||
goto ignore;
|
||||
|
||||
/* if remote suffix is empty, remove or add the dn separator*/
|
||||
if ( nsuff->bv_len == 0 ) {
|
||||
diff--;
|
||||
} else if ( osuff->bv_len == 0 ) {
|
||||
diff++;
|
||||
}
|
||||
|
||||
|
||||
res->bv_len = diff + nsuff->bv_len;
|
||||
res->bv_val = dc->op->o_tmpalloc( res->bv_len + 1, dc->memctx );
|
||||
strncpy( res->bv_val, dn->bv_val, diff );
|
||||
if ( osuff->bv_len == 0 )
|
||||
res->bv_val[diff-1] = ',';
|
||||
strcpy( &res->bv_val[diff], nsuff->bv_val );
|
||||
|
||||
if (pretty.bv_val)
|
||||
|
Loading…
Reference in New Issue
Block a user