diff options
| -rw-r--r-- | source3/rpc_parse/parse_spoolss.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/source3/rpc_parse/parse_spoolss.c b/source3/rpc_parse/parse_spoolss.c index 55bfd4fe57..34d77f132a 100644 --- a/source3/rpc_parse/parse_spoolss.c +++ b/source3/rpc_parse/parse_spoolss.c @@ -1481,11 +1481,16 @@ static BOOL new_smb_io_relsecdesc(char *desc, NEW_BUFFER *buffer, int depth,  	if (MARSHALLING(ps)) {  		uint32 struct_offset = prs_offset(ps);  		uint32 relative_offset; + +		if (! *secdesc) { +			relative_offset = 0; +			if (!prs_uint32("offset", ps, depth, &relative_offset)) +				return False; +			return True; +		}  		if (*secdesc != NULL) { -#if 0 /* JRA */ -			buffer->string_at_end -= 256; /* HACK! */  -#endif +			buffer->string_at_end -= sec_desc_size(*secdesc);  			prs_set_offset(ps, buffer->string_at_end);  | 
