r21047: Hand marshalling hack from Martin Zielinski <mz@seh.de>
authorJeremy Allison <jra@samba.org>
Mon, 29 Jan 2007 22:51:44 +0000 (22:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:17:29 +0000 (12:17 -0500)
to allow Vista to upload printer drivers (it wants level 8
which we don't support yet). Downgrade in the same way
that Windows servers do.
Jeremy.
(This used to be commit 01c659692c3e054904f1af815cf243b8a1dde109)

source3/rpc_server/srv_spoolss.c

index 0a43e8ae8ac8498a540e49ade990aab7968fb624..dcc357f8040ca8517d30878220224124ade113f2 100755 (executable)
@@ -1477,6 +1477,15 @@ static BOOL api_spoolss_addprinterdriverex(pipes_struct *p)
        ZERO_STRUCT(r_u);
        
        if(!spoolss_io_q_addprinterdriverex("", &q_u, data, 0)) {
+               if (q_u.level != 3 && q_u.level != 6) {
+                       /* Clever hack from Martin Zielinski <mz@seh.de>
+                        * to allow downgrade from level 8 (Vista).
+                        */
+                       DEBUG(3,("api_spoolss_addprinterdriverex: unknown SPOOL_Q_ADDPRINTERDRIVEREX level %u.\n",
+                               (unsigned int)q_u.level ));
+                       setup_fault_pdu(p, NT_STATUS(DCERPC_FAULT_INVALID_TAG));
+                       return True;
+               }
                DEBUG(0,("spoolss_io_q_addprinterdriverex: unable to unmarshall SPOOL_Q_ADDPRINTERDRIVEREX.\n"));
                return False;
        }