svn commit: samba r21100 - in branches: SAMBA_3_0/source/rpc_server SAMBA_3_0_24/source/rpc_server

jra at samba.org jra at samba.org
Wed Jan 31 21:33:46 GMT 2007


Author: jra
Date: 2007-01-31 21:33:45 +0000 (Wed, 31 Jan 2007)
New Revision: 21100

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=21100

Log:
Add the RPC hack fix to adddriver as well as adddriverex.
Thanks to Martin Zielinski <mz at seh.de>.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/rpc_server/srv_spoolss.c
   branches/SAMBA_3_0_24/source/rpc_server/srv_spoolss.c


Changeset:
Modified: branches/SAMBA_3_0/source/rpc_server/srv_spoolss.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_spoolss.c	2007-01-31 20:28:32 UTC (rev 21099)
+++ branches/SAMBA_3_0/source/rpc_server/srv_spoolss.c	2007-01-31 21:33:45 UTC (rev 21100)
@@ -910,6 +910,15 @@
 	ZERO_STRUCT(r_u);
 	
 	if(!spoolss_io_q_addprinterdriver("", &q_u, data, 0)) {
+		if (q_u.level != 3 && q_u.level != 6) {
+			/* Clever hack from Martin Zielinski <mz at seh.de>
+			 * to allow downgrade from level 8 (Vista).
+			 */
+			DEBUG(3,("api_spoolss_addprinterdriver: unknown SPOOL_Q_ADDPRINTERDRIVER 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_addprinterdriver: unable to unmarshall SPOOL_Q_ADDPRINTERDRIVER.\n"));
 		return False;
 	}

Modified: branches/SAMBA_3_0_24/source/rpc_server/srv_spoolss.c
===================================================================
--- branches/SAMBA_3_0_24/source/rpc_server/srv_spoolss.c	2007-01-31 20:28:32 UTC (rev 21099)
+++ branches/SAMBA_3_0_24/source/rpc_server/srv_spoolss.c	2007-01-31 21:33:45 UTC (rev 21100)
@@ -910,6 +910,15 @@
 	ZERO_STRUCT(r_u);
 	
 	if(!spoolss_io_q_addprinterdriver("", &q_u, data, 0)) {
+		if (q_u.level != 3 && q_u.level != 6) {
+			/* Clever hack from Martin Zielinski <mz at seh.de>
+			 * to allow downgrade from level 8 (Vista).
+			 */
+			DEBUG(3,("api_spoolss_addprinterdriver: unknown SPOOL_Q_ADDPRINTERDRIVER 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_addprinterdriver: unable to unmarshall SPOOL_Q_ADDPRINTERDRIVER.\n"));
 		return False;
 	}



More information about the samba-cvs mailing list