s3-spoolss: add more userlevel info validation to _spoolss_OpenPrinterEx.
authorGünther Deschner <gd@samba.org>
Mon, 11 Oct 2010 09:33:23 +0000 (11:33 +0200)
committerGünther Deschner <gd@samba.org>
Mon, 11 Oct 2010 14:31:06 +0000 (14:31 +0000)
Guenther

source3/rpc_server/srv_spoolss_nt.c

index 28800135717872843b0344862cce2cece4cd3c54..3783d0fba715e7bcf7f98e7dfc532d6f626a0fad 100644 (file)
@@ -1693,6 +1693,15 @@ WERROR _spoolss_OpenPrinterEx(struct pipes_struct *p,
                return WERR_INVALID_PARAM;
        }
 
+       if (r->in.level < 0 || r->in.level > 3) {
+               return WERR_INVALID_PARAM;
+       }
+       if ((r->in.level == 1 && !r->in.userlevel.level1) ||
+           (r->in.level == 2 && !r->in.userlevel.level2) ||
+           (r->in.level == 3 && !r->in.userlevel.level3)) {
+               return WERR_INVALID_PARAM;
+       }
+
        /* some sanity check because you can open a printer or a print server */
        /* aka: \\server\printer or \\server */