s3-spoolss: fix do_drv_upgrade_printer() which must have been broken since the
authorGünther Deschner <gd@samba.org>
Fri, 1 Oct 2010 04:42:58 +0000 (06:42 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 1 Oct 2010 06:33:47 +0000 (08:33 +0200)
days we moved away from fstrings.

Guenther

source3/rpc_server/srv_spoolss_nt.c

index 6b447ad4073f1f5d84956eec6b018ba9725bdd26..bb3b05d1b178898a68d55eeecf965dbe3034e5c0 100644 (file)
@@ -1493,7 +1493,6 @@ void do_drv_upgrade_printer(struct messaging_context *msg,
        const char *drivername;
        int snum;
        int n_services = lp_numservices();
-       size_t len;
 
        tmp_ctx = talloc_new(NULL);
        if (!tmp_ctx) return;
@@ -1505,8 +1504,7 @@ void do_drv_upgrade_printer(struct messaging_context *msg,
                goto done;
        }
 
-       len = MIN(data->length,sizeof(drivername)-1);
-       drivername = talloc_strndup(tmp_ctx, (const char *)data->data, len);
+       drivername = talloc_strndup(tmp_ctx, (const char *)data->data, data->length);
        if (!drivername) {
                DEBUG(0, ("do_drv_upgrade_printer: Out of memoery ?!\n"));
                goto done;
@@ -1522,6 +1520,11 @@ void do_drv_upgrade_printer(struct messaging_context *msg,
                        continue;
                }
 
+               /* ignore [printers] share */
+               if (strequal(lp_const_servicename(snum), "printers")) {
+                       continue;
+               }
+
                result = winreg_get_printer(tmp_ctx, server_info, msg,
                                            lp_const_servicename(snum),
                                            &pinfo2);