Index: source/rpc_parse/parse_spoolss.c =================================================================== --- source/rpc_parse/parse_spoolss.c (revision 2825) +++ source/rpc_parse/parse_spoolss.c (working copy) @@ -7367,12 +7367,34 @@ if (!ctr->values[i].data) return False; } - if (!prs_uint8s(False, "data", ps, depth, ctr->values[i].data, ctr->values[i].data_len)) + +#if 0 + /* my hotfix */ + if ( UNMARSHALLING(ps) ) { + if (*(uint16 *)&ps->data_p[ps->data_offset] == 0 && *(uint16 *)&ps->data_p[ps->data_offset+1] == 0) { + DEBUG(10,("take 1: pushing offset from: %d (0x%x) to %d (0x%x)\n", + ps->data_offset, ps->data_offset, ps->data_offset +2, ps->data_offset+2)); + ps->data_offset += 2; + } + } +#endif + if (!prs_uint8s(True, "data", ps, depth, ctr->values[i].data, ctr->values[i].data_len)) return False; } if ( !prs_align_uint16(ps) ) return False; +#if 1 + /* vls hotfix */ + if ( UNMARSHALLING(ps) ) { + + if (*(uint16 *)&ps->data_p[ps->data_offset] == 0) { + DEBUG(10,("take 2: pushing offset from: %d (0x%x) to %d (0x%x)\n", + ps->data_offset, ps->data_offset, ps->data_offset +2, ps->data_offset+2)); + ps->data_offset += 2; + } + } +#endif } return True;