s4:registry - "util" - fix up memory allocated data
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Mon, 22 Mar 2010 18:44:19 +0000 (19:44 +0100)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Mon, 22 Mar 2010 21:31:02 +0000 (22:31 +0100)
source4/lib/registry/util.c

index 8aff578cd92d9c735e160a0d17fc2e433aca4aec..2ebb86b147dbeb0dc5fd3c9951b8036394fc9cf4 100644 (file)
@@ -192,6 +192,7 @@ WERROR reg_open_key_abs(TALLOC_CTX *mem_ctx, struct registry_context *handle,
                predeflength = strlen(name);
 
        predefname = talloc_strndup(mem_ctx, name, predeflength);
+       W_ERROR_HAVE_NO_MEMORY(predefname);
        error = reg_get_predefined_key_by_name(handle, predefname, &predef);
        talloc_free(predefname);
 
@@ -220,13 +221,15 @@ static WERROR get_abs_parent(TALLOC_CTX *mem_ctx, struct registry_context *ctx,
        }
 
        parent_name = talloc_strndup(mem_ctx, path, strrchr(path, '\\')-path);
-
+       W_ERROR_HAVE_NO_MEMORY(parent_name);
        error = reg_open_key_abs(mem_ctx, ctx, parent_name, parent);
+       talloc_free(parent_name);
        if (!W_ERROR_IS_OK(error)) {
                return error;
        }
 
        *name = talloc_strdup(mem_ctx, strrchr(path, '\\')+1);
+       W_ERROR_HAVE_NO_MEMORY(*name);
 
        return WERR_OK;
 }
@@ -249,6 +252,9 @@ WERROR reg_key_del_abs(struct registry_context *ctx, const char *path)
 
        talloc_free(mem_ctx);
 
+       talloc_free(parent);
+       talloc_free(n);
+
        return error;
 }
 
@@ -274,5 +280,8 @@ WERROR reg_key_add_abs(TALLOC_CTX *mem_ctx, struct registry_context *ctx,
 
        error = reg_key_add_name(mem_ctx, parent, n, NULL, sec_desc, result);
 
+       talloc_free(parent);
+       talloc_free(n);
+
        return error;
 }