s3-spoolss: Fix Bug #7641: handle win9x adddriver calls w/o config file.
authorGünther Deschner <gd@samba.org>
Mon, 29 Nov 2010 16:56:40 +0000 (17:56 +0100)
committerKarolin Seeger <kseeger@samba.org>
Sat, 15 Jan 2011 15:56:23 +0000 (16:56 +0100)
This turned cupsaddsmb to run into an infinite loop.

Guenther
(cherry picked from commit c62509c8f2589e7b952517626d61ee34b83e96b3)
(cherry picked from commit 0a0f3b4947689ca4ab7015e9a1ace8d204bab9f3)

source3/printing/nt_printing.c

index f97b7464c5e379108b957e908e3ca6632e3ec33f..3d1d4e8c33da29ad7de3d1b4ddc3dc51f67359df 100644 (file)
@@ -1625,7 +1625,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 +1641,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);
        }