From 1e3a5503cd27109e3b79da9d1115ef80317e6849 Mon Sep 17 00:00:00 2001 From: Jean-François Micouleau Date: Wed, 26 Jul 2000 09:40:49 +0000 Subject: Found out that we are crashing spoolss in enumprinterdata. So fixed enumprinterdatas in rpcclient to debug the server code, and found that the parsing code was missing 2 prs_align(). We are not crashing NT anymore. :-) J.F. (This used to be commit 883f7402d495182aeff85152216cc8b3cfc18bef) --- source3/rpc_parse/parse_spoolss.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'source3/rpc_parse/parse_spoolss.c') diff --git a/source3/rpc_parse/parse_spoolss.c b/source3/rpc_parse/parse_spoolss.c index b0223d2803..bee8bae8cf 100644 --- a/source3/rpc_parse/parse_spoolss.c +++ b/source3/rpc_parse/parse_spoolss.c @@ -2434,7 +2434,7 @@ uint32 spoolss_size_printer_info_2(PRINTER_INFO_2 *info) size += 4; /* JRA !!!! TESTME - WHAT ABOUT prs_align.... !!! */ size += sec_desc_size( info->secdesc ); - + size+=size_of_device_mode( info->devmode ); size+=size_of_relative_string( &info->servername ); @@ -4581,6 +4581,10 @@ BOOL spoolss_io_r_enumprinterdata(char *desc, SPOOL_R_ENUMPRINTERDATA *r_u, prs_ return False; if(!prs_uint16s(False, "value", ps, depth, r_u->value, r_u->valuesize)) return False; + + if(!prs_align(ps)) + return False; + if(!prs_uint32("realvaluesize", ps, depth, &r_u->realvaluesize)) return False; @@ -4591,6 +4595,9 @@ BOOL spoolss_io_r_enumprinterdata(char *desc, SPOOL_R_ENUMPRINTERDATA *r_u, prs_ return False; if(!prs_uint8s(False, "data", ps, depth, r_u->data, r_u->datasize)) return False; + if(!prs_align(ps)) + return False; + if(!prs_uint32("realdatasize", ps, depth, &r_u->realdatasize)) return False; if(!prs_uint32("status", ps, depth, &r_u->status)) -- cgit