The branch, master has been updated via e9c42e3c21cdc1fa25a05ef0f2edc4ca9b0b486e (commit) via ebb3b307006d913b943a3cb341b32843e9ac6200 (commit) via 0038acb20d1c5ed8eea632adf631ed84f960165f (commit) via bcb5331fa7e8711e22c9543c59efa442143a6cc6 (commit) from 4f803502ef0bca3fee5017469f858bea702b069d (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit e9c42e3c21cdc1fa25a05ef0f2edc4ca9b0b486e Author: Günther Deschner <g...@samba.org> Date: Thu Feb 19 19:17:19 2009 +0100 s3-spoolss: fix _spoolss_GetPrinterDriverDirectory. treat architecture correctly as it is a [unique] pointer, and newer Windows versions sometimes send in an empty string. Guenther commit ebb3b307006d913b943a3cb341b32843e9ac6200 Author: Günther Deschner <g...@samba.org> Date: Thu Feb 19 17:41:10 2009 +0100 s3-rpcclient: use SPOOLSS_ARCHITECTURE_NT_X86 define in spoolss getdriverdir cmd. Guenther commit 0038acb20d1c5ed8eea632adf631ed84f960165f Author: Günther Deschner <g...@samba.org> Date: Thu Feb 19 15:56:05 2009 +0100 s3-spoolss: _spoolss_OpenPrinterEx needs to wipe out policy handle upon failure. Guenther commit bcb5331fa7e8711e22c9543c59efa442143a6cc6 Author: Günther Deschner <g...@samba.org> Date: Thu Feb 19 17:40:21 2009 +0100 s3-spoolss: _spoolss_AddPrinterEx needs to wipe out policy handle upon failure. Guenther ----------------------------------------------------------------------- Summary of changes: source3/rpc_server/srv_spoolss_nt.c | 18 +++++++++++++++++- source3/rpcclient/cmd_spoolss.c | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index d72e270..171953b 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -1529,6 +1529,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, DEBUGADD(3,("checking name: %s\n",name)); if (!open_printer_hnd(p, handle, name, 0)) { + ZERO_STRUCTP(r->out.handle); return WERR_INVALID_PARAM; } @@ -1537,6 +1538,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, DEBUG(0,("_spoolss_OpenPrinterEx: logic error. Can't find printer " "handle we created for printer %s\n", name )); close_printer_handle(p,handle); + ZERO_STRUCTP(r->out.handle); return WERR_INVALID_PARAM; } @@ -1587,6 +1589,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, ~(SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)) { DEBUG(3, ("access DENIED for non-printserver bits\n")); close_printer_handle(p, handle); + ZERO_STRUCTP(r->out.handle); return WERR_ACCESS_DENIED; } @@ -1598,6 +1601,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, if (!lp_ms_add_printer_wizard()) { close_printer_handle(p, handle); + ZERO_STRUCTP(r->out.handle); return WERR_ACCESS_DENIED; } @@ -1613,6 +1617,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, p->server_info->ptok, lp_printer_admin(snum))) { close_printer_handle(p, handle); + ZERO_STRUCTP(r->out.handle); return WERR_ACCESS_DENIED; } @@ -1635,6 +1640,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, if (!get_printer_snum(p, handle, &snum, NULL)) { close_printer_handle(p, handle); + ZERO_STRUCTP(r->out.handle); return WERR_BADFID; } @@ -1660,6 +1666,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, if ( !check_access(get_client_fd(), lp_hostsallow(snum), lp_hostsdeny(snum)) ) { DEBUG(3, ("access DENIED (hosts allow/deny) for printer open\n")); + ZERO_STRUCTP(r->out.handle); return WERR_ACCESS_DENIED; } @@ -1669,12 +1676,14 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, r->in.access_mask)) { DEBUG(3, ("access DENIED for printer open\n")); close_printer_handle(p, handle); + ZERO_STRUCTP(r->out.handle); return WERR_ACCESS_DENIED; } if ((r->in.access_mask & SPECIFIC_RIGHTS_MASK)& ~(PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE)) { DEBUG(3, ("access DENIED for printer open - unknown bits\n")); close_printer_handle(p, handle); + ZERO_STRUCTP(r->out.handle); return WERR_ACCESS_DENIED; } @@ -1690,6 +1699,7 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p, default: /* sanity check to prevent programmer error */ + ZERO_STRUCTP(r->out.handle); return WERR_BADFID; } @@ -7861,6 +7871,7 @@ static WERROR spoolss_addprinterex_level_2(pipes_struct *p, /* Handle open failed - remove addition. */ del_a_printer(printer->info_2->sharename); free_a_printer(&printer,2); + ZERO_STRUCTP(handle); return WERR_ACCESS_DENIED; } @@ -8055,15 +8066,20 @@ WERROR _spoolss_addprinterdriverex(pipes_struct *p, SPOOL_Q_ADDPRINTERDRIVEREX * static WERROR getprinterdriverdir_level_1(TALLOC_CTX *mem_ctx, const char *servername, - const char *long_archi, + const char *environment, struct spoolss_DriverDirectoryInfo1 *info1, uint32_t offered, uint32_t *needed) { char *path = NULL; const char *pservername = NULL; + const char *long_archi = SPOOLSS_ARCHITECTURE_NT_X86; const char *short_archi; + if (environment) { + long_archi = environment; + } + pservername = canon_servername(servername); if ( !is_myname_or_ipaddr(pservername)) diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index 2011154..90995ff 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -1166,7 +1166,7 @@ static WERROR cmd_spoolss_getdriverdir(struct rpc_pipe_client *cli, { WERROR result; NTSTATUS status; - const char *env = "Windows NT x86"; + const char *env = SPOOLSS_ARCHITECTURE_NT_X86; DATA_BLOB buffer; uint32_t offered; union spoolss_DriverDirectoryInfo info; -- Samba Shared Repository