s4:registry - add more "W_ERROR_HAVE_NO_MEMORY" invocations (on talloc'ed stuff)
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Mon, 22 Mar 2010 19:10:26 +0000 (20:10 +0100)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Mon, 22 Mar 2010 21:31:05 +0000 (22:31 +0100)
source4/lib/registry/patchfile_dotreg.c
source4/lib/registry/regf.c
source4/lib/registry/rpc.c
source4/lib/registry/samba.c

index 12f2f70774aedcdd3b943fa06833202f006272ec..5bb955ebc3f906d39f84178da02d68119486ead2 100644 (file)
@@ -181,9 +181,11 @@ _PUBLIC_ WERROR reg_dotreg_diff_load(int fd,
                        /* Deleting key */
                        if (line[1] == '-') {
                                curkey = talloc_strndup(line, line+2, strlen(line)-3);
+                               W_ERROR_HAVE_NO_MEMORY(curkey);
 
                                error = callbacks->del_key(callback_data,
                                                           curkey);
+
                                if (!W_ERROR_IS_OK(error)) {
                                        DEBUG(0,("Error deleting key %s\n",
                                                curkey));
@@ -196,6 +198,7 @@ _PUBLIC_ WERROR reg_dotreg_diff_load(int fd,
                                continue;
                        }
                        curkey = talloc_strndup(mem_ctx, line+1, strlen(line)-2);
+                       W_ERROR_HAVE_NO_MEMORY(curkey);
 
                        error = callbacks->add_key(callback_data, curkey);
                        if (!W_ERROR_IS_OK(error)) {
index 52adb3ae98e1370382fe40e14cbd9c77f058adda..5825ac18a8e44c3d65350b4ec0baa9bfa80ac758 100644 (file)
@@ -455,6 +455,7 @@ static WERROR regf_get_info(TALLOC_CTX *mem_ctx,
                        *classname = talloc_strndup(mem_ctx,
                                                    (char*)data.data,
                                                    private_data->nk->clsname_length);
+                       W_ERROR_HAVE_NO_MEMORY(*classname);
                } else
                        *classname = NULL;
        }
@@ -540,8 +541,10 @@ static WERROR regf_get_value(TALLOC_CTX *ctx, struct hive_key *key,
        }
 
        /* FIXME: name character set ?*/
-       if (name != NULL)
+       if (name != NULL) {
                *name = talloc_strndup(ctx, vk->data_name, vk->name_length);
+               W_ERROR_HAVE_NO_MEMORY(*name);
+       }
 
        if (data_type != NULL)
                *data_type = vk->data_type;
@@ -549,6 +552,7 @@ static WERROR regf_get_value(TALLOC_CTX *ctx, struct hive_key *key,
        if (vk->data_length & 0x80000000) {
                vk->data_length &=~0x80000000;
                data->data = (uint8_t *)talloc_memdup(ctx, (uint8_t *)&vk->data_offset, vk->data_length);
+               W_ERROR_HAVE_NO_MEMORY(data->data);
                data->length = vk->data_length;
        } else {
                *data = hbin_get(regf, vk->data_offset);
@@ -773,6 +777,7 @@ static WERROR regf_get_subkey_by_index(TALLOC_CTX *ctx,
                        *classname = talloc_strndup(ctx,
                                                    (char*)db.data,
                                                    ret->nk->clsname_length);
+                       W_ERROR_HAVE_NO_MEMORY(*classname);
                } else
                        *classname = NULL;
        }
index d7b853bb92de9cbcbd9b59564c4be11a2da3371b..a596fad2e354f7125c28fe84becbe0ac1959bf4d 100644 (file)
@@ -117,6 +117,7 @@ static WERROR rpc_get_predefined_key(struct registry_context *ctx,
        }
 
        mykeydata = talloc_zero(ctx, struct rpc_key);
+       W_ERROR_HAVE_NO_MEMORY(mykeydata);
        mykeydata->key.context = ctx;
        mykeydata->binding_handle = rctx->binding_handle;
        mykeydata->num_values = -1;
@@ -160,6 +161,7 @@ static WERROR rpc_open_key(TALLOC_CTX *mem_ctx, struct registry_key *h,
        NTSTATUS status;
 
        mykeydata = talloc_zero(mem_ctx, struct rpc_key);
+       W_ERROR_HAVE_NO_MEMORY(mykeydata);
        mykeydata->key.context = parentkeydata->key.context;
        mykeydata->binding_handle = parentkeydata->binding_handle;
        mykeydata->num_values = -1;
@@ -487,6 +489,7 @@ _PUBLIC_ WERROR reg_open_remote(struct registry_context **ctx,
        dcerpc_init(lp_ctx);
 
        rctx = talloc(NULL, struct rpc_registry_context);
+       W_ERROR_HAVE_NO_MEMORY(rctx);
 
        /* Default to local smbd if no connection is specified */
        if (!location) {
index fc59bdfdfab515eefbababc313e42e583881f154..b04dcc75cd7586f6923c56abd59fe6de18672d9d 100644 (file)
@@ -40,6 +40,7 @@ static WERROR mount_samba_hive(struct registry_context *ctx,
        location = talloc_asprintf(ctx, "%s/%s.ldb",
                                   lp_private_dir(lp_ctx),
                                   name);
+       W_ERROR_HAVE_NO_MEMORY(location);
 
        error = reg_open_hive(ctx, location, auth_info, creds, event_ctx, lp_ctx, &hive);