s3:spoolss: Return error when there is no driver assigned
authorAndreas Schneider <asn@samba.org>
Wed, 16 Nov 2016 14:29:34 +0000 (15:29 +0100)
committerJeremy Allison <jra@samba.org>
Sun, 20 Nov 2016 01:28:11 +0000 (02:28 +0100)
If you create a new printer in Samba, there is no driver assinged.
Detect that early and return the right error code.

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/rpc_server/spoolss/srv_spoolss_nt.c

index 1dcb22755bab5df12c66c6d60cdf253e5970dd30..a0270c2872e1dadfbe7d6496d15955d5056225a9 100644 (file)
@@ -5704,6 +5704,14 @@ static WERROR construct_printer_driver_info_level(TALLOC_CTX *mem_ctx,
                goto done;
        }
 
+       if (pinfo2->drivername == NULL || pinfo2->drivername[0] == '\0') {
+               return WERR_UNKNOWN_PRINTER_DRIVER;
+       }
+
+       DBG_INFO("Construct printer driver [%s] for [%s]\n",
+                pinfo2->drivername,
+                pinfo2->sharename);
+
        result = winreg_get_driver(tmp_ctx, b,
                                   architecture,
                                   pinfo2->drivername, version, &driver);