Fix bug #7781 (Samba transforms "ShareName" to lowercase when adding new share via...
[samba.git] / source3 / printing / nt_printing.c
index 200a51a897b0dadb8e9f3b965dd4c3d67c9d67c7..85ce703bd80e198dac4fea167721877943389f77 100644 (file)
@@ -91,8 +91,6 @@ static const nt_forms_struct default_forms[] = {
        {"Legal",0x1,0x34b5c,0x56d10,0x0,0x0,0x34b5c,0x56d10},
        {"Statement",0x1,0x221b4,0x34b5c,0x0,0x0,0x221b4,0x34b5c},
        {"Executive",0x1,0x2cf56,0x411cc,0x0,0x0,0x2cf56,0x411cc},
-       {"A0",0x1,0xcd528,0x122488,0x0,0x0,0xcd528,0x122488},
-       {"A1",0x1,0x91050,0xcd528,0x0,0x0,0x91050,0xcd528},
        {"A3",0x1,0x48828,0x668a0,0x0,0x0,0x48828,0x668a0},
        {"A4",0x1,0x33450,0x48828,0x0,0x0,0x33450,0x48828},
        {"A4 Small",0x1,0x33450,0x48828,0x0,0x0,0x33450,0x48828},
@@ -1474,9 +1472,7 @@ static uint32 get_correct_cversion(struct pipes_struct *p,
                return 3;
        }
 
-       fstrcpy(printdollar, "print$");
-
-       printdollar_snum = find_service(printdollar);
+       printdollar_snum = find_service("print$", printdollar);
        if (printdollar_snum == -1) {
                *perr = WERR_NO_SUCH_SHARE;
                return -1;
@@ -1625,7 +1621,11 @@ static WERROR clean_up_driver_struct_level(TALLOC_CTX *mem_ctx,
        WERROR err;
        char *_p;
 
-       if (!*driver_path || !*data_file || !*config_file) {
+       if (!*driver_path || !*data_file) {
+               return WERR_INVALID_PARAM;
+       }
+
+       if (!strequal(architecture, SPOOLSS_ARCHITECTURE_4_0) && !*config_file) {
                return WERR_INVALID_PARAM;
        }
 
@@ -1637,7 +1637,9 @@ static WERROR clean_up_driver_struct_level(TALLOC_CTX *mem_ctx,
 
        strip_driver_path(mem_ctx, *driver_path);
        strip_driver_path(mem_ctx, *data_file);
-       strip_driver_path(mem_ctx, *config_file);
+       if (*config_file) {
+               strip_driver_path(mem_ctx, *config_file);
+       }
        if (help_file) {
                strip_driver_path(mem_ctx, *help_file);
        }
@@ -1860,9 +1862,7 @@ WERROR move_driver_to_download_area(struct pipes_struct *p,
                return WERR_UNKNOWN_PRINTER_DRIVER;
        }
 
-       fstrcpy(printdollar, "print$");
-
-       printdollar_snum = find_service(printdollar);
+       printdollar_snum = find_service("print$", printdollar);
        if (printdollar_snum == -1) {
                *perr = WERR_NO_SUCH_SHARE;
                return WERR_NO_SUCH_SHARE;
@@ -5130,9 +5130,7 @@ static bool delete_driver_files(struct pipes_struct *rpc_pipe,
        DEBUG(6,("delete_driver_files: deleting driver [%s] - version [%d]\n",
                r->driver_name, r->version));
 
-       fstrcpy(printdollar, "print$");
-
-       printdollar_snum = find_service(printdollar);
+       printdollar_snum = find_service("print$", printdollar);
        if (printdollar_snum == -1) {
                return false;
        }
@@ -5727,7 +5725,9 @@ bool print_access_check(struct auth_serversupplied_info *server_info, int snum,
 
         if (!NT_STATUS_IS_OK(status) &&
            (token_contains_name_in_list(uidtoname(server_info->utok.uid),
-                                        NULL, NULL, server_info->ptok,
+                                        pdb_get_domain(server_info->sam_account),
+                                        NULL,
+                                        server_info->ptok,
                                         lp_printer_admin(snum)))) {
                talloc_destroy(mem_ctx);
                return True;