From a3a28675fafbbc5a5a378b3a7235253d772ef63e Mon Sep 17 00:00:00 2001 From: David O'Neill Date: Fri, 1 Sep 2000 18:49:26 +0000 Subject: Changes from APPLIANCE_HEAD (per Tim Potter): - make proto - addition of function to convert from errno values to NT status codes (source/lib/error.c) - purge queue done without full access permission will purge only the jobs owned by that user, rather than failing. - unlock job database tdb before sending job to printer - in print_job_start(), ensure that we don't pick a jobid with an existing temporary file that may be owned by another user, as it causes silent failures. - fixes for printer permission checking for NT5 clients (source/include/rpc_spoolss.h, source/printing/nt_printing.c, source/printing/printing.c, source/rpc_server/srv_spoolss_nt.c) - change from uint8 to 'enum SID_NAME_USE' (source/rpc_server/srv_lsa.c) - fixed memory leaks for win95 driver download process (source/smbd/lanman.c) - properly free prs_structs and dacl in testsuite/printing/psec.c (This used to be commit 74af3e2caec7197e5d1ca389e2f78054a4197502) --- source3/include/proto.h | 7 +++++-- source3/include/rpc_spoolss.h | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'source3/include') diff --git a/source3/include/proto.h b/source3/include/proto.h index 38393e3de8..9d239d38fd 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -93,6 +93,10 @@ SMB_OFF_T dos_file_size(char *file_name); int dos_ChDir(char *path); char *dos_GetWd(char *path); +/*The following definitions come from lib/error.c */ + +uint32 map_nt_error_from_unix(int unix_error); + /*The following definitions come from lib/fault.c */ void fault_setup(void (*fn)(void *)); @@ -1709,8 +1713,7 @@ BOOL get_specific_param(NT_PRINTER_INFO_LEVEL printer, uint32 level, fstring value, uint8 **data, uint32 *type, uint32 *len); uint32 nt_printing_setsec(char *printername, SEC_DESC_BUF *secdesc_ctr); BOOL nt_printing_getsec(char *printername, SEC_DESC_BUF **secdesc_ctr); -BOOL print_access_check(struct current_user *user, int snum, - uint32 required_access); +BOOL print_access_check(struct current_user *user, int snum, int access_type); BOOL print_time_access_check(int snum); #endif diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h index a77ce55063..eb521a5b94 100755 --- a/source3/include/rpc_spoolss.h +++ b/source3/include/rpc_spoolss.h @@ -145,13 +145,18 @@ #define PRINTER_STATUS_POWER_SAVE 0x01000000 -/* Printer permissions ACE settings */ +/* Printer permissions ACE settings. NT4 uses generic and standard access + rights whereas NT5 converts them all to object specific access rights. */ #define PRINTER_ACE_FULL_CONTROL GENERIC_ALL_ACCESS #define PRINTER_ACE_MANAGE_DOCUMENTS READ_CONTROL_ACCESS #define PRINTER_ACE_PRINT \ (GENERIC_READ_ACCESS | GENERIC_WRITE_ACCESS | GENERIC_EXECUTE_ACCESS) +#define PRINTER_ACE_NT5_FULL_CONTROL 0x000f000c +#define PRINTER_ACE_NT5_PRINT 0x00020000 +#define PRINTER_ACE_NT5_MANAGE_DOCUMENTS 0x00020008 + #define SERVER_ACCESS_ADMINISTER 0x00000001 #define SERVER_ACCESS_ENUMERATE 0x00000002 #define PRINTER_ACCESS_ADMINISTER 0x00000004 -- cgit