summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2013-02-25 15:13:19 +0100
committerDavid Disseldorp <ddiss@suse.de>2013-03-05 23:30:03 +0100
commitcab969d5ec67b1b3afbd4be2ff3a0d3cec45fd45 (patch)
treea0c262680097160a34a7343833375dfa937af9f4
parent2aca90b9a00e0727d640c235ef71a9a8b0c5fdca (diff)
downloadsamba-cab969d5ec67b1b3afbd4be2ff3a0d3cec45fd45.tar.gz
samba-cab969d5ec67b1b3afbd4be2ff3a0d3cec45fd45.tar.bz2
samba-cab969d5ec67b1b3afbd4be2ff3a0d3cec45fd45.zip
s4-libregistry: Fix path check and improve while loops.
Reviewed-by: David Disseldorp <ddiss@samba.org>
-rw-r--r--source4/lib/registry/local.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/source4/lib/registry/local.c b/source4/lib/registry/local.c
index 98791743ae..79c398b68a 100644
--- a/source4/lib/registry/local.c
+++ b/source4/lib/registry/local.c
@@ -80,7 +80,7 @@ static WERROR local_open_key(TALLOC_CTX *mem_ctx,
const char **elements = NULL;
int el;
- if (path == NULL) {
+ if (path == NULL || path[0] == '\0') {
return WERR_INVALID_PARAM;
}
@@ -103,7 +103,7 @@ static WERROR local_open_key(TALLOC_CTX *mem_ctx,
el = 0;
}
- while (curbegin != NULL && *curbegin) {
+ do {
if (curend != NULL)
*curend = '\0';
elements = talloc_realloc(mem_ctx, elements, const char *, el+2);
@@ -124,7 +124,7 @@ static WERROR local_open_key(TALLOC_CTX *mem_ctx,
break;
curbegin = curend + 1;
curend = strchr(curbegin, '\\');
- }
+ } while (curbegin != NULL && curbegin[0] != '\0');
talloc_free(orig);
*result = reg_import_hive_key(local_parent->global.context, curkey,
@@ -184,7 +184,7 @@ static WERROR local_create_key(TALLOC_CTX *mem_ctx,
const char **elements = NULL;
int el;
- if (path == NULL) {
+ if (path == NULL || path[0] == '\0') {
return WERR_INVALID_PARAM;
}
@@ -207,7 +207,7 @@ static WERROR local_create_key(TALLOC_CTX *mem_ctx,
el = 0;
}
- while (curbegin != NULL && *curbegin) {
+ do {
if (curend != NULL)
*curend = '\0';
elements = talloc_realloc(mem_ctx, elements, const char *, el+2);
@@ -233,7 +233,7 @@ static WERROR local_create_key(TALLOC_CTX *mem_ctx,
break;
curbegin = curend + 1;
curend = strchr(curbegin, '\\');
- }
+ } while (curbegin != NULL && curbegin[0] != '\0');
talloc_free(orig);
*result = reg_import_hive_key(local_parent->global.context, curkey,