Nicholas Brealey
2003-Apr-05 11:55 UTC
[Samba] Samba 2.2.8 SEGV in rpcclient getdriver on Solaris 7
Hello I was trying to figure out how to add printer drivers manually for downloading to Windows 2000 clients and I came accross this problem. (The printer drivers were installed some time ago using an earlier version of samba 2.2.x). $ dbx /usr/local/samba/bin/rpcclient (dbx) run xxxxxxx -U yyyyyyy Running: rpcclient xxxxxxx -U yyyyyyy (process id 4735) Password: rpcclient $> enumprinters flags:[0x800000] name:[\\xxxxxxx\hpem] description:[\\xxxxxxx\hpem,HP LaserJet 4050 Series PS,HP LaserJet 4050N PS] comment:[HP LaserJet 4050N PS] (trimmed) rpcclient $> getdriver hpem [Windows NT x86] signal SEGV (no mapping at the fault address) in strlen_w at 0x778d4 0x000778d4: strlen_w+0x0004: lduh [%o0], %g3 (dbx) where =>[1] strlen_w(0x0, 0x1caf00, 0x1f, 0xffbed760, 0x36, 0x0), at 0x778d4 [2] rpcstr_pull(0xffbecfe0, 0x0, 0x0, 0x0, 0x1, 0x100), at 0x797ac [3] display_print_driver_3(0x1, 0x0, 0x1c79e8, 0xff23d8fc, 0x0, 0x3), at 0x33de4 [4] cmd_spoolss_getdriver(0x15de40, 0xffbed848, 0x2, 0x1c2f48, 0x12c48c, 0x0), at 0x340cc [5] do_cmd(0x1c5b30, 0x12c590, 0x1c5b78, 0xf108c, 0x81010100, 0xff00), at 0x2efb0 [6] process_cmd(0xffbee044, 0x0, 0x0, 0x15a5c8, 0x12c590, 0x15de40), at 0x2f148 [7] main(0x12c218, 0x12c238, 0xffbef948, 0xf13ac, 0x0, 0x159878), at 0x2f9fc (dbx) Regards Nick
Nicholas Brealey
2003-Apr-06 22:29 UTC
[Samba] Samba 2.2.8 SEGV in rpcclient getdriver on Solaris 7
Hello Replying to my own post. The same problem occurred in HEAD and 3.0 and was fixed, see: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=b16d5s%24oq2%241%40FreeBSD.csie.NCTU.edu.tw&rnum=2&prev=/groups%3Fq%3Dsamba%2Brpcclient%2Bgetdriver%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Den%26btnG%3DGoogle%2BSearch The patch was: http://cvs.samba.org/cgi-bin/cvsweb/samba/source/lib/util_unistr.c.diff?r1=1.97&r2=1.98 I applied as similar patch and avoided the crash. I now get: rpcclient $> getdriver hplt2 [Windows NT x86] Printer Driver Info 3: Version: [2] Driver Name: [HP LaserJet 2200 Series PS] Architecture: [Windows NT x86] Driver Path: [\\xxxxxxx\print$\W32X86\2\PSCRIPT4.DLL] Datafile: [\\xxxxxxx\print$\W32X86\2\HP2200_6.PPD] Configfile: [\\xxxxxxx\print$\W32X86\2\PS4UI.DLL] Helpfile: [\\xxxxxxx\print$\W32X86\2\PSCRIPT4.HLP] Dependentfiles: [\\xxxxxxx\print$\W32X86\2\HPBHEALR.DLL] Dependentfiles: [\\xxxxxxx\print$\W32X86\2\HPDOMON.DLL] Dependentfiles: [\\xxxxxxx\print$\W32X86\2\HPBMMON.DLL] Dependentfiles: [\\xxxxxxx\print$\W32X86\2\PSCRIPT.NTF] Monitorname: [HP Master Monitor] Defaultdatatype: [??] I don't know what the ?? means. Nick Nicholas Brealey wrote:> Hello > > I was trying to figure out how to add printer drivers manually for > downloading to Windows 2000 clients and I came accross this problem. > (The printer drivers were installed some time ago using an earlier > version of samba 2.2.x). > > > $ dbx /usr/local/samba/bin/rpcclient > (dbx) run xxxxxxx -U yyyyyyy > Running: rpcclient xxxxxxx -U yyyyyyy > (process id 4735) > Password: > rpcclient $> enumprinters > flags:[0x800000] > name:[\\xxxxxxx\hpem] > description:[\\xxxxxxx\hpem,HP LaserJet 4050 Series PS,HP > LaserJet 4050N PS] > comment:[HP LaserJet 4050N PS] > (trimmed) > rpcclient $> getdriver hpem > > > [Windows NT x86] > signal SEGV (no mapping at the fault address) in strlen_w at 0x778d4 > 0x000778d4: strlen_w+0x0004: lduh [%o0], %g3 > (dbx) where > =>[1] strlen_w(0x0, 0x1caf00, 0x1f, 0xffbed760, 0x36, 0x0), at 0x778d4 > [2] rpcstr_pull(0xffbecfe0, 0x0, 0x0, 0x0, 0x1, 0x100), at 0x797ac > [3] display_print_driver_3(0x1, 0x0, 0x1c79e8, 0xff23d8fc, 0x0, 0x3), > at 0x33de4 > [4] cmd_spoolss_getdriver(0x15de40, 0xffbed848, 0x2, 0x1c2f48, > 0x12c48c, 0x0), at 0x340cc > [5] do_cmd(0x1c5b30, 0x12c590, 0x1c5b78, 0xf108c, 0x81010100, 0xff00), > at 0x2efb0 > [6] process_cmd(0xffbee044, 0x0, 0x0, 0x15a5c8, 0x12c590, 0x15de40), > at 0x2f148 > [7] main(0x12c218, 0x12c238, 0xffbef948, 0xf13ac, 0x0, 0x159878), at > 0x2f9fc > (dbx) > > Regards > > Nick >-------------- next part -------------- --- source/lib/util_unistr.c.2.2.8 Sun Apr 6 23:12:48 2003 +++ source/lib/util_unistr.c Sun Apr 6 23:14:27 2003 @@ -2085,7 +2085,8 @@ int rpcstr_pull(char* dest, void *src, int dest_len, int src_len, int flags) { - if(dest_len==-1) + if (!src) return 0; + if(dest_len==-1) dest_len=MAXUNI-3; if (flags & STR_TERMINATE)