s3-spoolss: Fixed a segfault if a value has no data.
authorAndreas Schneider <asn@samba.org>
Mon, 2 Aug 2010 11:49:59 +0000 (13:49 +0200)
committerAndreas Schneider <asn@samba.org>
Mon, 2 Aug 2010 14:42:39 +0000 (16:42 +0200)
source3/rpc_server/srv_spoolss_util.c

index 60d282551fba107921f144bad2f5f7df2b20ed22..3a9523c5aa33988aefcc100da770de504445c7cb 100644 (file)
@@ -443,7 +443,7 @@ static WERROR winreg_printer_enumvalues(TALLOC_CTX *mem_ctx,
                struct spoolss_PrinterEnumValues val;
                struct winreg_ValNameBuf name_buf;
                enum winreg_Type type = REG_NONE;
-               uint8_t *data = NULL;
+               uint8_t *data;
                uint32_t data_size;
                uint32_t length;
                char n = '\0';;
@@ -453,7 +453,10 @@ static WERROR winreg_printer_enumvalues(TALLOC_CTX *mem_ctx,
                name_buf.length = 0;
 
                data_size = max_valbufsize;
-               data = (uint8_t *) TALLOC(tmp_ctx, data_size);
+               data = NULL;
+               if (data_size) {
+                       data = (uint8_t *) TALLOC(tmp_ctx, data_size);
+               }
                length = 0;
 
                status = rpccli_winreg_EnumValue(pipe_handle,
@@ -463,7 +466,7 @@ static WERROR winreg_printer_enumvalues(TALLOC_CTX *mem_ctx,
                                                 &name_buf,
                                                 &type,
                                                 data,
-                                                &data_size,
+                                                data_size ? &data_size : NULL,
                                                 &length,
                                                 &result);
                if (W_ERROR_EQUAL(result, WERR_NO_MORE_ITEMS) ) {