diff options
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index c05ba66e42..e63c63e1c5 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -586,16 +586,22 @@ static bool set_printer_hnd_name(TALLOC_CTX *mem_ctx, DEBUGADD(5, ("searching for [%s]\n", aprinter)); - if ((p = strchr(aprinter, ',')) != NULL) { - if (*p == ' ') + p = strchr(aprinter, ','); + if (p != NULL) { + char *p2 = p; + p++; + if (*p == ' ') { p++; - if (strnequal(p+1, "DrvConvert", strlen("DrvConvert")) || - strnequal(p+1, " DrvConvert", strlen(" DrvConvert"))) { - *p = '\0'; - } else if (strnequal(p+1, "LocalOnly", strlen("LocalOnly")) || - strnequal(p+1, " LocalOnly", strlen(" LocalOnly"))) { - *p = '\0'; } + if (strncmp(p, "DrvConvert", strlen("DrvConvert")) == 0) { + *p2 = '\0'; + } else if (strncmp(p, "LocalOnly", strlen("LocalOnly")) == 0) { + *p2 = '\0'; + } + } + + if (p) { + DEBUGADD(5, ("stripped handlename: [%s]\n", aprinter)); } /* check for the Port Monitor Interface */ @@ -1691,7 +1697,7 @@ WERROR _spoolss_OpenPrinterEx(struct pipes_struct *p, DEBUG(0,("_spoolss_OpenPrinterEx: Cannot open a printer handle " "for printer %s\n", r->in.printername)); ZERO_STRUCTP(r->out.handle); - return WERR_INVALID_PARAM; + return WERR_INVALID_PRINTER_NAME; } Printer = find_printer_index_by_hnd(p, r->out.handle); |