svn commit: samba r11135 - branches/SAMBA_3_0/source/rpc_server
branches/SAMBA_3_0_RELEASE/source/rpc_server trunk/source/rpc_server
jerry at samba.org
jerry at samba.org
Tue Oct 18 02:37:17 GMT 2005
Author: jerry
Date: 2005-10-18 02:37:13 +0000 (Tue, 18 Oct 2005)
New Revision: 11135
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11135
Log:
should fix seg fault in addprinter code reported by Marcin. Allocate memory in convert_printer_info() if necessary
Modified:
branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c
branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_spoolss_nt.c
trunk/source/rpc_server/srv_spoolss_nt.c
Changeset:
Modified: branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c 2005-10-18 02:36:16 UTC (rev 11134)
+++ branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c 2005-10-18 02:37:13 UTC (rev 11135)
@@ -1729,20 +1729,29 @@
static BOOL convert_printer_info(const SPOOL_PRINTER_INFO_LEVEL *uni,
NT_PRINTER_INFO_LEVEL *printer, uint32 level)
{
- BOOL ret = True;
+ BOOL ret;
switch (level) {
case 2:
- /* printer->info_2 is already a valid printer */
+ /* allocate memory if needed. Messy because
+ convert_printer_info is used to update an existing
+ printer or build a new one */
+
+ if ( !printer->info_2 ) {
+ printer->info_2 = TALLOC_ZERO_P( printer, NT_PRINTER_INFO_LEVEL_2 );
+ if ( !printer->info_2 ) {
+ DEBUG(0,("convert_printer_info: talloc() failed!\n"));
+ return False;
+ }
+ }
+
ret = uni_2_asc_printer_info_2(uni->info_2, printer->info_2);
printer->info_2->setuptime = time(NULL);
- break;
- default:
- break;
+ return ret;
}
- return ret;
+ return False;
}
static BOOL convert_printer_driver_info(const SPOOL_PRINTER_DRIVER_INFO_LEVEL *uni,
Modified: branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_spoolss_nt.c 2005-10-18 02:36:16 UTC (rev 11134)
+++ branches/SAMBA_3_0_RELEASE/source/rpc_server/srv_spoolss_nt.c 2005-10-18 02:37:13 UTC (rev 11135)
@@ -1729,20 +1729,29 @@
static BOOL convert_printer_info(const SPOOL_PRINTER_INFO_LEVEL *uni,
NT_PRINTER_INFO_LEVEL *printer, uint32 level)
{
- BOOL ret = True;
+ BOOL ret;
switch (level) {
case 2:
- /* printer->info_2 is already a valid printer */
+ /* allocate memory if needed. Messy because
+ convert_printer_info is used to update an existing
+ printer or build a new one */
+
+ if ( !printer->info_2 ) {
+ printer->info_2 = TALLOC_ZERO_P( printer, NT_PRINTER_INFO_LEVEL_2 );
+ if ( !printer->info_2 ) {
+ DEBUG(0,("convert_printer_info: talloc() failed!\n"));
+ return False;
+ }
+ }
+
ret = uni_2_asc_printer_info_2(uni->info_2, printer->info_2);
printer->info_2->setuptime = time(NULL);
- break;
- default:
- break;
+ return ret;
}
- return ret;
+ return False;
}
static BOOL convert_printer_driver_info(const SPOOL_PRINTER_DRIVER_INFO_LEVEL *uni,
Modified: trunk/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- trunk/source/rpc_server/srv_spoolss_nt.c 2005-10-18 02:36:16 UTC (rev 11134)
+++ trunk/source/rpc_server/srv_spoolss_nt.c 2005-10-18 02:37:13 UTC (rev 11135)
@@ -1729,20 +1729,29 @@
static BOOL convert_printer_info(const SPOOL_PRINTER_INFO_LEVEL *uni,
NT_PRINTER_INFO_LEVEL *printer, uint32 level)
{
- BOOL ret = True;
+ BOOL ret;
switch (level) {
case 2:
- /* printer->info_2 is already a valid printer */
+ /* allocate memory if needed. Messy because
+ convert_printer_info is used to update an existing
+ printer or build a new one */
+
+ if ( !printer->info_2 ) {
+ printer->info_2 = TALLOC_ZERO_P( printer, NT_PRINTER_INFO_LEVEL_2 );
+ if ( !printer->info_2 ) {
+ DEBUG(0,("convert_printer_info: talloc() failed!\n"));
+ return False;
+ }
+ }
+
ret = uni_2_asc_printer_info_2(uni->info_2, printer->info_2);
printer->info_2->setuptime = time(NULL);
- break;
- default:
- break;
+ return ret;
}
- return ret;
+ return False;
}
static BOOL convert_printer_driver_info(const SPOOL_PRINTER_DRIVER_INFO_LEVEL *uni,
More information about the samba-cvs
mailing list