From 025290e9bf0f7597dc8d849a221fd80f140c1f7a Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnther=20Deschner?= Date: Mon, 4 Oct 2010 20:27:20 +0200 Subject: [PATCH] s3-spoolss: let set_printer_hnd_name return WERROR. Guenther --- source3/rpc_server/srv_spoolss_nt.c | 36 +++++++++++++++-------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 5237352c13d..28800135717 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -532,11 +532,11 @@ static void prune_printername_cache(void) XcvDataPort() interface. ****************************************************************************/ -static bool set_printer_hnd_name(TALLOC_CTX *mem_ctx, - const struct auth_serversupplied_info *server_info, - struct messaging_context *msg_ctx, - struct printer_handle *Printer, - const char *handlename) +static WERROR set_printer_hnd_name(TALLOC_CTX *mem_ctx, + const struct auth_serversupplied_info *server_info, + struct messaging_context *msg_ctx, + struct printer_handle *Printer, + const char *handlename) { int snum; int n_services=lp_numservices(); @@ -568,20 +568,20 @@ static bool set_printer_hnd_name(TALLOC_CTX *mem_ctx, aprinter++; } if (!is_myname_or_ipaddr(servername)) { - return false; + return WERR_INVALID_PRINTER_NAME; } Printer->servername = talloc_asprintf(Printer, "\\\\%s", servername); if (Printer->servername == NULL) { - return false; + return WERR_NOMEM; } } if (Printer->printer_type == SPLHND_SERVER) { - return true; + return WERR_OK; } if (Printer->printer_type != SPLHND_PRINTER) { - return false; + return WERR_INVALID_HANDLE; } DEBUGADD(5, ("searching for [%s]\n", aprinter)); @@ -631,7 +631,7 @@ static bool set_printer_hnd_name(TALLOC_CTX *mem_ctx, if (!found) { DEBUG(4, ("Printer %s not found\n", aprinter)); SAFE_FREE(tmp); - return false; + return WERR_INVALID_PRINTER_NAME; } fstrcpy(sname, tmp); SAFE_FREE(tmp); @@ -702,7 +702,7 @@ static bool set_printer_hnd_name(TALLOC_CTX *mem_ctx, TALLOC_FREE(cache_key); } DEBUGADD(4,("Printer not found\n")); - return false; + return WERR_INVALID_PRINTER_NAME; } if (cache_key != NULL) { @@ -714,7 +714,7 @@ static bool set_printer_hnd_name(TALLOC_CTX *mem_ctx, fstrcpy(Printer->sharename, sname); - return true; + return WERR_OK; } /**************************************************************************** @@ -727,6 +727,7 @@ static WERROR open_printer_hnd(struct pipes_struct *p, uint32_t access_granted) { struct printer_handle *new_printer; + WERROR result; DEBUG(10,("open_printer_hnd: name [%s]\n", name)); @@ -752,12 +753,13 @@ static WERROR open_printer_hnd(struct pipes_struct *p, return WERR_INVALID_HANDLE; } - if (!set_printer_hnd_name(p->mem_ctx, - get_server_info_system(), - p->msg_ctx, - new_printer, name)) { + result = set_printer_hnd_name(p->mem_ctx, + get_server_info_system(), + p->msg_ctx, + new_printer, name); + if (!W_ERROR_IS_OK(result)) { close_printer_handle(p, hnd); - return WERR_INVALID_HANDLE; + return result; } new_printer->access_granted = access_granted; -- 2.34.1