From 57939971b42b8f0a993e08e92480223b4f412907 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Tue, 2 Aug 2005 07:26:29 +0000 Subject: 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) --- source3/rpc_server/srv_spoolss_nt.c | 16 ++++++++-------- 1 file 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 -- cgit