When unmarshalling a relstr, don't unmarshall the string data if the
authorTim Potter <tpot@samba.org>
Thu, 17 Oct 2002 06:39:44 +0000 (06:39 +0000)
committerTim Potter <tpot@samba.org>
Thu, 17 Oct 2002 06:39:44 +0000 (06:39 +0000)
offset is zero.  Previously we were jumping to the start of the
parse buffer (i.e offset zero) and reading string data until we hit
a terminating NULL.

Test case: in a PRINTER_INFO_0 structure, the servername field may be
NULL when doing an enumprinters with flags = PRINTER_ENUM_LOCAL.
(This used to be commit e62c6bf066c2242aae605ba707c9775b37bcaca3)

source3/rpc_parse/parse_spoolss.c

index 783dd97ebf53f76302fa079b77b678a0e428e486..32f0c3a369ebeac03d8fbe3f6729a1b7ff278039 100644 (file)
@@ -2097,6 +2097,9 @@ static BOOL smb_io_relstr(char *desc, NEW_BUFFER *buffer, int depth, UNISTR *str
                if (!prs_uint32("offset", ps, depth, &(buffer->string_at_end)))
                        return False;
 
+               if (buffer->string_at_end == 0)
+                       return True;
+
                old_offset = prs_offset(ps);
                if(!prs_set_offset(ps, buffer->string_at_end+buffer->struct_start))
                        return False;