From 7f363fa32d3b660567fc87d5d0b1e1d4dd58461a Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Mon, 14 Jul 2003 05:13:30 +0000 Subject: [PATCH] Don't bomb out when trying to unmarshall a zero length printerdata value. Fixes remote printer publishing of shared printers from a Samba server. --- source/rpc_parse/parse_spoolss.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/rpc_parse/parse_spoolss.c b/source/rpc_parse/parse_spoolss.c index 03b204e69d..1a380c64d5 100644 --- a/source/rpc_parse/parse_spoolss.c +++ b/source/rpc_parse/parse_spoolss.c @@ -7296,15 +7296,14 @@ static BOOL spoolss_io_printer_enum_values_ctr(const char *desc, prs_struct *ps, if (!prs_unistr("valuename", ps, depth, &ctr->values[i].valuename)) return False; - if (UNMARSHALLING(ps)) { + if (UNMARSHALLING(ps) && ctr->values[i].data_len) { ctr->values[i].data = (uint8 *)prs_alloc_mem( ps, ctr->values[i].data_len); if (!ctr->values[i].data) return False; + if (!prs_uint8s(False, "data", ps, depth, ctr->values[i].data, ctr->values[i].data_len)) + return False; } - - if (!prs_uint8s(False, "data", ps, depth, ctr->values[i].data, ctr->values[i].data_len)) - return False; if ( !prs_align_uint16(ps) ) return False; -- 2.34.1