Index: registry/reg_printing.c =================================================================== --- registry/reg_printing.c (revision 11859) +++ registry/reg_printing.c (working copy) @@ -227,7 +227,16 @@ reg_split_path( printers_key, &printername, &printerdatakey ); - if ( find_service(printername) == -1 + /* validate the printer name */ + + for (snum=0; snum=n_services || !W_ERROR_IS_OK( get_a_printer(NULL, &printer, 2, printername) ) ) { return -1; Index: rpc_server/srv_spoolss_nt.c =================================================================== --- rpc_server/srv_spoolss_nt.c (revision 11859) +++ rpc_server/srv_spoolss_nt.c (working copy) @@ -479,29 +479,30 @@ DEBUGADD(5, ("searching for [%s]\n", aprinter )); /* Search all sharenames first as this is easier than pulling - the printer_info_2 off of disk */ + the printer_info_2 off of disk. Don't use find_service() since + that calls out to map_username() */ - snum = find_service(aprinter); - - if ( lp_snum_ok(snum) && lp_print_ok(snum) ) { - found = True; - fstrcpy( sname, aprinter ); - } - /* do another loop to look for printernames */ for (snum=0; !found && snum