diff options
author | Gerald Carter <jerry@samba.org> | 2005-08-02 07:26:29 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:00:20 -0500 |
commit | 57939971b42b8f0a993e08e92480223b4f412907 (patch) | |
tree | f817d95a526908b8c9dd5e556f25625a6a439650 | |
parent | f31965b549d5def6d0b25ece6b1ff721fc66bcab (diff) | |
download | samba-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.c | 16 |
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 |