winreg: Use the ntstatus return code for client side errors
authorDavid Disseldorp <ddiss@suse.de>
Wed, 6 Jul 2011 10:19:05 +0000 (12:19 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Fri, 8 Jul 2011 13:22:27 +0000 (15:22 +0200)
cli_winreg.c functions indicate status to the caller in two ways. The
ntstatus return code indicates client side errors, the pwerr argument
carries the server response error code.

Many functions are filling the pwerr argument on client side error, this
change removes these cases.

Signed-off-by: Andreas Schneider <asn@samba.org>
source3/rpc_client/cli_winreg.c

index e5ebc25ed80f7190558ebf42bd91c1dbbe166e6d..1b8898fd9ddd5f62621d460d3bfff7997a3a5c35 100644 (file)
@@ -60,19 +60,16 @@ NTSTATUS dcerpc_winreg_query_dword(TALLOC_CTX *mem_ctx,
        }
 
        if (type != REG_DWORD) {
-               *pwerr = WERR_INVALID_DATATYPE;
-               return status;
+               return NT_STATUS_OBJECT_TYPE_MISMATCH;
        }
 
        if (data_size != 4) {
-               *pwerr = WERR_INVALID_DATA;
-               return status;
+               return NT_STATUS_INVALID_PARAMETER;
        }
 
        blob = data_blob_talloc_zero(mem_ctx, data_size);
        if (blob.data == NULL) {
-               *pwerr = WERR_NOMEM;
-               return status;
+               return NT_STATUS_NO_MEMORY;
        }
        value_len = 0;
 
@@ -136,14 +133,12 @@ NTSTATUS dcerpc_winreg_query_binary(TALLOC_CTX *mem_ctx,
        }
 
        if (type != REG_BINARY) {
-               *pwerr = WERR_INVALID_DATATYPE;
-               return status;
+               return NT_STATUS_OBJECT_TYPE_MISMATCH;
        }
 
        blob = data_blob_talloc_zero(mem_ctx, data_size);
        if (blob.data == NULL) {
-               *pwerr = WERR_NOMEM;
-               return status;
+               return NT_STATUS_NO_MEMORY;
        }
        value_len = 0;
 
@@ -207,14 +202,12 @@ NTSTATUS dcerpc_winreg_query_multi_sz(TALLOC_CTX *mem_ctx,
        }
 
        if (type != REG_MULTI_SZ) {
-               *pwerr = WERR_INVALID_DATATYPE;
-               return status;
+               return NT_STATUS_OBJECT_TYPE_MISMATCH;
        }
 
        blob = data_blob_talloc_zero(mem_ctx, data_size);
        if (blob.data == NULL) {
-               *pwerr = WERR_NOMEM;
-               return status;
+               return NT_STATUS_NO_MEMORY;
        }
        value_len = 0;
 
@@ -240,7 +233,7 @@ NTSTATUS dcerpc_winreg_query_multi_sz(TALLOC_CTX *mem_ctx,
 
                ok = pull_reg_multi_sz(mem_ctx, &blob, data);
                if (!ok) {
-                       *pwerr = WERR_NOMEM;
+                       status = NT_STATUS_NO_MEMORY;
                }
        }
 
@@ -282,14 +275,12 @@ NTSTATUS dcerpc_winreg_query_sz(TALLOC_CTX *mem_ctx,
        }
 
        if (type != REG_SZ) {
-               *pwerr = WERR_INVALID_DATATYPE;
-               return status;
+               return NT_STATUS_OBJECT_TYPE_MISMATCH;
        }
 
        blob = data_blob_talloc_zero(mem_ctx, data_size);
        if (blob.data == NULL) {
-               *pwerr = WERR_NOMEM;
-               return status;
+               return NT_STATUS_NO_MEMORY;
        }
        value_len = 0;
 
@@ -315,7 +306,7 @@ NTSTATUS dcerpc_winreg_query_sz(TALLOC_CTX *mem_ctx,
 
                ok = pull_reg_sz(mem_ctx, &blob, data);
                if (!ok) {
-                       *pwerr = WERR_NOMEM;
+                       status = NT_STATUS_NO_MEMORY;
                }
        }
 
@@ -353,8 +344,7 @@ NTSTATUS dcerpc_winreg_query_sd(TALLOC_CTX *mem_ctx,
 
                sd = talloc_zero(mem_ctx, struct security_descriptor);
                if (sd == NULL) {
-                       *pwerr = WERR_NOMEM;
-                       return NT_STATUS_OK;
+                       return NT_STATUS_NO_MEMORY;
                }
 
                ndr_err = ndr_pull_struct_blob(&blob,
@@ -364,8 +354,7 @@ NTSTATUS dcerpc_winreg_query_sd(TALLOC_CTX *mem_ctx,
                if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                        DEBUG(2, ("dcerpc_winreg_query_sd: Failed to marshall "
                                  "security descriptor\n"));
-                       *pwerr = WERR_NOMEM;
-                       return NT_STATUS_OK;
+                       return NT_STATUS_NO_MEMORY;
                }
 
                *data = sd;
@@ -429,8 +418,7 @@ NTSTATUS dcerpc_winreg_set_sz(TALLOC_CTX *mem_ctx,
                        DEBUG(2, ("dcerpc_winreg_set_sz: Could not marshall "
                                  "string %s for %s\n",
                                  data, wvalue.name));
-                       *pwerr = WERR_NOMEM;
-                       return NT_STATUS_OK;
+                       return NT_STATUS_NO_MEMORY;
                }
        }
 
@@ -472,8 +460,7 @@ NTSTATUS dcerpc_winreg_set_expand_sz(TALLOC_CTX *mem_ctx,
                        DEBUG(2, ("dcerpc_winreg_set_expand_sz: Could not marshall "
                                  "string %s for %s\n",
                                  data, wvalue.name));
-                       *pwerr = WERR_NOMEM;
-                       return NT_STATUS_OK;
+                       return NT_STATUS_NO_MEMORY;
                }
        }
 
@@ -512,8 +499,7 @@ NTSTATUS dcerpc_winreg_set_multi_sz(TALLOC_CTX *mem_ctx,
                DEBUG(2, ("dcerpc_winreg_set_multi_sz: Could not marshall "
                          "string multi sz for %s\n",
                          wvalue.name));
-               *pwerr = WERR_NOMEM;
-               return NT_STATUS_OK;
+               return NT_STATUS_NO_MEMORY;
        }
 
        status = dcerpc_winreg_SetValue(h,
@@ -582,8 +568,7 @@ NTSTATUS dcerpc_winreg_set_sd(TALLOC_CTX *mem_ctx,
        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                DEBUG(2, ("dcerpc_winreg_set_sd: Failed to marshall security "
                          "descriptor\n"));
-               *pwerr = WERR_NOMEM;
-               return NT_STATUS_OK;
+               return NT_STATUS_NO_MEMORY;
        }
 
        return dcerpc_winreg_set_binary(mem_ctx,
@@ -619,8 +604,7 @@ NTSTATUS dcerpc_winreg_add_multi_sz(TALLOC_CTX *mem_ctx,
 
        p = talloc_realloc(mem_ctx, a, const char *, i + 2);
        if (p == NULL) {
-               *pwerr = WERR_NOMEM;
-               return NT_STATUS_OK;
+               return NT_STATUS_NO_MEMORY;
        }
 
        p[i] = data;
@@ -684,14 +668,14 @@ NTSTATUS dcerpc_winreg_enum_keys(TALLOC_CTX *mem_ctx,
 
        subkeys = talloc_zero_array(tmp_ctx, const char *, num_subkeys + 2);
        if (subkeys == NULL) {
-               *pwerr = WERR_NOMEM;
+               status = NT_STATUS_NO_MEMORY;
                goto error;
        }
 
        if (num_subkeys == 0) {
                subkeys[0] = talloc_strdup(subkeys, "");
                if (subkeys[0] == NULL) {
-                       *pwerr = WERR_NOMEM;
+                       status = NT_STATUS_NO_MEMORY;
                        goto error;
                }
                *pnum_subkeys = 0;
@@ -753,7 +737,7 @@ NTSTATUS dcerpc_winreg_enum_keys(TALLOC_CTX *mem_ctx,
 
                name = talloc_strdup(subkeys, name_buf.name);
                if (name == NULL) {
-                       *pwerr = WERR_NOMEM;
+                       status = NT_STATUS_NO_MEMORY;
                        goto error;
                }