summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2005-08-02 07:26:29 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:00:20 -0500
commit57939971b42b8f0a993e08e92480223b4f412907 (patch)
treef817d95a526908b8c9dd5e556f25625a6a439650
parentf31965b549d5def6d0b25ece6b1ff721fc66bcab (diff)
downloadsamba-57939971b42b8f0a993e08e92480223b4f412907.tar.gz
samba-57939971b42b8f0a993e08e92480223b4f412907.tar.bz2
samba-57939971b42b8f0a993e08e92480223b4f412907.zip
r8916: should fix the valgrind invalid read of size 1 onthe
GetPrinterData("OSVersion") abartlet saw when browsing from Vista client. (This used to be commit b527b86ae80ebc0b6e7318ed31d44be985aa9af0)
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 7498a449c3..bec67daa3e 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -2283,7 +2283,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
if (!StrCaseCmp(value, "W3SvcInstalled")) {
*type = REG_DWORD;
- if((*data = (uint8 *)TALLOC_ZERO(ctx, 4*sizeof(uint8) )) == NULL)
+ if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
*needed = 0x4;
return WERR_OK;
@@ -2291,7 +2291,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
if (!StrCaseCmp(value, "BeepEnabled")) {
*type = REG_DWORD;
- if((*data = (uint8 *)TALLOC(ctx, 4*sizeof(uint8) )) == NULL)
+ if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
SIVAL(*data, 0, 0x00);
*needed = 0x4;
@@ -2300,7 +2300,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
if (!StrCaseCmp(value, "EventLog")) {
*type = REG_DWORD;
- if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
+ if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
/* formally was 0x1b */
SIVAL(*data, 0, 0x0);
@@ -2310,7 +2310,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
if (!StrCaseCmp(value, "NetPopup")) {
*type = REG_DWORD;
- if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
+ if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
SIVAL(*data, 0, 0x00);
*needed = 0x4;
@@ -2319,7 +2319,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
if (!StrCaseCmp(value, "MajorVersion")) {
*type = REG_DWORD;
- if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
+ if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
/* Windows NT 4.0 seems to not allow uploading of drivers
@@ -2338,7 +2338,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
if (!StrCaseCmp(value, "MinorVersion")) {
*type = REG_DWORD;
- if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
+ if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
SIVAL(*data, 0, 0);
*needed = 0x4;
@@ -2356,7 +2356,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
*type = REG_BINARY;
*needed = 0x114;
- if ( !(*data = TALLOC_ZERO_ARRAY(ctx, uint8, *needed)) )
+ if ( !(*data = TALLOC_ZERO_ARRAY(ctx, uint8, (*needed > in_size) ? *needed:in_size )) )
return WERR_NOMEM;
SIVAL(*data, 0, *needed); /* size */
@@ -2402,7 +2402,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint
if (!StrCaseCmp(value, "DsPresent")) {
*type = REG_DWORD;
- if((*data = (uint8 *)TALLOC(ctx, 4 )) == NULL)
+ if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) )
return WERR_NOMEM;
/* only show the publish check box if we are a