summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Baumbach <bb@sernet.de>2010-12-22 15:20:29 +0100
committerStefan Metzmacher <metze@samba.org>2011-01-12 17:25:53 +0100
commitf5af66e67d7c6d62315671c0cf57f47973316226 (patch)
tree07de8eb4ae633fb69ca7c74fa2a878949fcc0d8c
parentdac7ccee9ff01407bfadbfe466425f0266eafd52 (diff)
downloadsamba-f5af66e67d7c6d62315671c0cf57f47973316226.tar.gz
samba-f5af66e67d7c6d62315671c0cf57f47973316226.tar.bz2
samba-f5af66e67d7c6d62315671c0cf57f47973316226.zip
s3-rpcclient: Fix bug #7880: cmd_spoolss_deletedriver() returned without checking all architectures.
Continues now with next architecture if no driver is available. Because of the broken behavior of the rpccli_*() functions, we need special error code handling. Signed-off-by: Stefan Metzmacher <metze@samba.org>
-rw-r--r--source3/rpcclient/cmd_spoolss.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c
index 50f1209c45..f9d7b6560b 100644
--- a/source3/rpcclient/cmd_spoolss.c
+++ b/source3/rpcclient/cmd_spoolss.c
@@ -1945,6 +1945,8 @@ static WERROR cmd_spoolss_deletedriver(struct rpc_pipe_client *cli,
/* delete the driver for all architectures */
for (i=0; archi_table[i].long_archi; i++) {
+ result = WERR_OK;
+
/* make the call to remove the driver */
status = rpccli_spoolss_DeletePrinterDriver(cli, mem_ctx,
cli->srv_name_slash,
@@ -1952,7 +1954,9 @@ static WERROR cmd_spoolss_deletedriver(struct rpc_pipe_client *cli,
argv[1],
&result);
if (!NT_STATUS_IS_OK(status)) {
- return result;
+ if (W_ERROR_IS_OK(result)) {
+ result = ntstatus_to_werror(status);
+ }
}
if ( !W_ERROR_IS_OK(result) ) {
if ( !W_ERROR_EQUAL(result, WERR_UNKNOWN_PRINTER_DRIVER) ) {