]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3-rpcclient: Fix Bug #7277. rpcclient was sending invalid data, causing cupsaddsmb...
authorGünther Deschner <gd@samba.org>
Mon, 3 May 2010 13:54:14 +0000 (15:54 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 4 May 2010 07:28:47 +0000 (09:28 +0200)
Guenther
(cherry picked from commit 9cc10e6a5742f09261f01a2c0b3a94b7b772e573)

source3/rpcclient/cmd_spoolss.c

index 3d078d70a44ba321e79ba1b72fed83d189f43ce7..181f0b56604e950045077270665d4ef24c7bed7b 100644 (file)
@@ -1743,6 +1743,7 @@ static WERROR cmd_spoolss_setdriver(struct rpc_pipe_client *cli,
        const char              *printername;
        union spoolss_PrinterInfo info;
        struct spoolss_SetPrinterInfoCtr info_ctr;
+       struct spoolss_SetPrinterInfo2 info2;
        struct spoolss_DevmodeContainer devmode_ctr;
        struct sec_desc_buf secdesc_ctr;
 
@@ -1781,12 +1782,30 @@ static WERROR cmd_spoolss_setdriver(struct rpc_pipe_client *cli,
 
        /* Set the printer driver */
 
-       info.info2.drivername = argv[2];
-       info.info2.devmode = NULL;
-       info.info2.secdesc = NULL;
+       info2.servername        = info.info2.servername;
+       info2.printername       = info.info2.printername;
+       info2.sharename         = info.info2.sharename;
+       info2.portname          = info.info2.portname;
+       info2.drivername        = argv[2];
+       info2.comment           = info.info2.comment;
+       info2.location          = info.info2.location;
+       info2.devmode_ptr       = 0;
+       info2.sepfile           = info.info2.sepfile;
+       info2.printprocessor    = info.info2.printprocessor;
+       info2.datatype          = info.info2.datatype;
+       info2.parameters        = info.info2.parameters;
+       info2.secdesc_ptr       = 0;
+       info2.attributes        = info.info2.attributes;
+       info2.priority          = info.info2.priority;
+       info2.defaultpriority   = info.info2.defaultpriority;
+       info2.starttime         = info.info2.starttime;
+       info2.untiltime         = info.info2.untiltime;
+       info2.status            = info.info2.status;
+       info2.cjobs             = info.info2.cjobs;
+       info2.averageppm        = info.info2.averageppm;
 
        info_ctr.level = 2;
-       info_ctr.info.info2 = (struct spoolss_SetPrinterInfo2 *)&info.info2;
+       info_ctr.info.info2 = &info2;
 
        status = rpccli_spoolss_SetPrinter(cli, mem_ctx,
                                           &pol,