diff options
author | Jean-François Micouleau <jfm@samba.org> | 1999-09-24 14:45:21 +0000 |
---|---|---|
committer | Jean-François Micouleau <jfm@samba.org> | 1999-09-24 14:45:21 +0000 |
commit | a893df5c00189d7e81efd619a4a4ee2bd8ead61f (patch) | |
tree | 10d928d5287d47ac7f01d20e24fcb649c76bf1cb /source/rpc_parse | |
parent | 7dc7801c20d53caef09519231a65403e007344e6 (diff) | |
download | samba-a893df5c00189d7e81efd619a4a4ee2bd8ead61f.tar.gz samba-a893df5c00189d7e81efd619a4a4ee2bd8ead61f.tar.xz samba-a893df5c00189d7e81efd619a4a4ee2bd8ead61f.zip |
Correctly handle the dependent files in the printer_driver_info_3 struct
It means complex printer drivers should now download fine.
J.F.
Diffstat (limited to 'source/rpc_parse')
-rw-r--r-- | source/rpc_parse/parse_spoolss.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/source/rpc_parse/parse_spoolss.c b/source/rpc_parse/parse_spoolss.c index 7b15ba2a427..c66d176c78b 100644 --- a/source/rpc_parse/parse_spoolss.c +++ b/source/rpc_parse/parse_spoolss.c @@ -828,15 +828,25 @@ static void smb_io_relarraystr(char *desc, prs_struct *ps, int depth, UNISTR *** uint32 relative_offset; struct_offset=ps->offset; - while ( (*buffer)[i]!=0x0000 ) { + i++; + } + + i--; + + /* that's for the ending NULL */ + *end_offset-=2; + + do + { *end_offset-= 2*(str_len_uni((*buffer)[i])+1); ps->offset=*end_offset; spoolss_smb_io_unistr(desc, (*buffer)[i], ps, depth); - i++; + i--; } + while (i>=0); ps->offset=struct_offset; relative_offset=*end_offset-*start_offset; @@ -1328,7 +1338,7 @@ static uint32 spoolss_size_printer_driver_info_3(DRIVER_INFO_3 *info) size+=2*(1+ str_len_uni( string[i] ) ); i++; } - size+=4; + size+=6; DEBUGADD(9,("size: [%d]\n", size)); return (size); |