From ee20ef73e3e48aae3257d3471def3d80f013d90a Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 13 Oct 2004 19:40:22 +0000 Subject: r2955: fixing a segfault uncovered by the changes for BUG 1519 --- source/include/rpc_spoolss.h | 1 + source/printing/nt_printing.c | 8 +++++--- source/rpc_server/srv_spoolss_nt.c | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) (limited to 'source') diff --git a/source/include/rpc_spoolss.h b/source/include/rpc_spoolss.h index f2b78f91bc0..7c5942759f4 100755 --- a/source/include/rpc_spoolss.h +++ b/source/include/rpc_spoolss.h @@ -206,6 +206,7 @@ #define PRINTER_NOTIFY_TYPE 0x00 #define JOB_NOTIFY_TYPE 0x01 +#define PRINT_TABLE_END 0xFF #define MAX_PRINTER_NOTIFY 26 #define MAX_JOB_NOTIFY 24 diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c index 81d792463a5..6474516ebcd 100644 --- a/source/printing/nt_printing.c +++ b/source/printing/nt_printing.c @@ -380,9 +380,11 @@ BOOL nt_printing_init(void) msgs. This is done in claim_connection() */ - win_rc = check_published_printers(); - if (!W_ERROR_IS_OK(win_rc)) - DEBUG(0, ("nt_printing_init: error checking published printers: %s\n", dos_errstr(win_rc))); + if ( lp_security() == SEC_ADS ) { + win_rc = check_published_printers(); + if (!W_ERROR_IS_OK(win_rc)) + DEBUG(0, ("nt_printing_init: error checking published printers: %s\n", dos_errstr(win_rc))); + } return True; } diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index a1db4c38548..c882cea59b0 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -3506,6 +3506,7 @@ static const struct s_notify_info_data_table notify_info_data_table[] = { JOB_NOTIFY_TYPE, JOB_NOTIFY_TOTAL_PAGES, "JOB_NOTIFY_TOTAL_PAGES", NOTIFY_ONE_VALUE, spoolss_notify_total_pages }, { JOB_NOTIFY_TYPE, JOB_NOTIFY_PAGES_PRINTED, "JOB_NOTIFY_PAGES_PRINTED", NOTIFY_ONE_VALUE, spoolss_notify_pages_printed }, { JOB_NOTIFY_TYPE, JOB_NOTIFY_TOTAL_BYTES, "JOB_NOTIFY_TOTAL_BYTES", NOTIFY_ONE_VALUE, spoolss_notify_job_size }, +{ PRINT_TABLE_END, 0x0, NULL, 0x0, NULL }, }; /******************************************************************* @@ -3571,7 +3572,7 @@ static int search_notify(uint16 type, uint16 field, int *value) { int i; - for (i = 0; i < sizeof(notify_info_data_table); i++) { + for (i = 0; notify_info_data_table[i].type != PRINT_TABLE_END; i++) { if (notify_info_data_table[i].type == type && notify_info_data_table[i].field == field && notify_info_data_table[i].fn != NULL) { -- cgit