mirror of
https://github.com/samba-team/samba.git
synced 2025-11-28 12:23:49 +03:00
r9387: regedit uses "New Key #nn" for newly created keys, which conflicts with the stricter
DN rules in ldb. Escape the DN components to cope. Simo, sorry for making a change in ldb_dn.c while you have changes pending. Please feel free to revert these and switch reg_backend_ldb.c to use the new dn construction code.
This commit is contained in:
committed by
Gerald (Jerry) Carter
parent
ae42976590
commit
136ecf5cb2
@@ -56,7 +56,7 @@ static int ldb_dn_is_valid_attribute_name(const char *name)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static char *ldb_dn_escape_value(void *mem_ctx, struct ldb_val value)
|
||||
char *ldb_dn_escape_value(void *mem_ctx, struct ldb_val value)
|
||||
{
|
||||
const char *p, *s, *src;
|
||||
char *d, *dst;
|
||||
|
||||
@@ -342,6 +342,7 @@ int ldb_attrib_add_handlers(struct ldb_context *ldb,
|
||||
|
||||
int ldb_dn_cmp(struct ldb_context *ldb, const char *dn1, const char *dn2);
|
||||
int ldb_attr_cmp(const char *dn1, const char *dn2);
|
||||
char *ldb_dn_escape_value(void *mem_ctx, struct ldb_val value);
|
||||
|
||||
/* case-fold a DN */
|
||||
char *ldb_dn_fold(void * mem_ctx,
|
||||
|
||||
@@ -126,12 +126,24 @@ static char *reg_path_to_ldb(TALLOC_CTX *mem_ctx, struct registry_key *from, con
|
||||
while(mypath) {
|
||||
char *keyname;
|
||||
begin = strrchr(mypath, '\\');
|
||||
struct ldb_val val;
|
||||
char *key;
|
||||
|
||||
if(begin) keyname = begin + 1;
|
||||
if (begin) keyname = begin + 1;
|
||||
else keyname = mypath;
|
||||
|
||||
if(strlen(keyname))
|
||||
ret = talloc_asprintf_append(ret, "key=%s,", keyname);
|
||||
val.data = keyname;
|
||||
val.length = strlen(keyname);
|
||||
|
||||
key = ldb_dn_escape_value(mem_ctx, val);
|
||||
if (key == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (strlen(key))
|
||||
ret = talloc_asprintf_append(ret, "key=%s,", key);
|
||||
|
||||
talloc_free(key);
|
||||
|
||||
if(begin) {
|
||||
*begin = '\0';
|
||||
|
||||
Reference in New Issue
Block a user