From 5cff7e1692e4caa308271581f3df3f72c4f31261 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=BCnther=20Deschner?= Date: Tue, 14 Jul 2009 14:34:30 +0200 Subject: [PATCH] s3-spoolss: add some printer info validation for AddPrinter calls. Guenther --- source3/rpc_server/srv_spoolss_nt.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 34daf40d8f9..66eb59bd40f 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -7145,6 +7145,28 @@ static WERROR spoolss_addprinterex_level_2(pipes_struct *p, return WERR_PRINTER_ALREADY_EXISTS; } + /* validate printer info struct */ + if (!info_ctr->info.info2->printername || + strlen(info_ctr->info.info2->printername) == 0) { + free_a_printer(&printer,2); + return WERR_INVALID_PRINTER_NAME; + } + if (!info_ctr->info.info2->portname || + strlen(info_ctr->info.info2->portname) == 0) { + free_a_printer(&printer,2); + return WERR_UNKNOWN_PORT; + } + if (!info_ctr->info.info2->drivername || + strlen(info_ctr->info.info2->drivername) == 0) { + free_a_printer(&printer,2); + return WERR_UNKNOWN_PRINTER_DRIVER; + } + if (!info_ctr->info.info2->printprocessor || + strlen(info_ctr->info.info2->printprocessor) == 0) { + free_a_printer(&printer,2); + return WERR_UNKNOWN_PRINTPROCESSOR; + } + /* FIXME!!! smbd should check to see if the driver is installed before trying to add a printer like this --jerry */ -- 2.34.1