void map_job_permissions(struct security_descriptor *sd);
bool print_access_check(struct auth_serversupplied_info *server_info, int snum,
int access_type);
-bool print_time_access_check(const char *servicename);
+bool print_time_access_check(struct auth_serversupplied_info *server_info,
+ const char *servicename);
char* get_server_name( Printer_entry *printer );
/* The following definitions come from printing/pcap.c */
Check the time parameters allow a print operation.
*****************************************************************************/
-bool print_time_access_check(const char *servicename)
+bool print_time_access_check(struct auth_serversupplied_info *server_info,
+ const char *servicename)
{
- NT_PRINTER_INFO_LEVEL *printer = NULL;
+ struct spoolss_PrinterInfo2 *pinfo2 = NULL;
+ WERROR result;
bool ok = False;
time_t now = time(NULL);
struct tm *t;
uint32 mins;
- if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, servicename)))
+ result = winreg_get_printer(NULL, server_info,
+ NULL, servicename, &pinfo2);
+ if (!W_ERROR_IS_OK(result)) {
return False;
+ }
- if (printer->info_2->starttime == 0 && printer->info_2->untiltime == 0)
+ if (pinfo2->starttime == 0 && pinfo2->untiltime == 0) {
ok = True;
+ }
t = gmtime(&now);
mins = (uint32)t->tm_hour*60 + (uint32)t->tm_min;
- if (mins >= printer->info_2->starttime && mins <= printer->info_2->untiltime)
+ if (mins >= pinfo2->starttime && mins <= pinfo2->untiltime) {
ok = True;
+ }
- free_a_printer(&printer, 2);
+ TALLOC_FREE(pinfo2);
- if (!ok)
+ if (!ok) {
errno = EACCES;
+ }
return ok;
}
return (uint32)-1;
}
- if (!print_time_access_check(lp_servicename(snum))) {
+ if (!print_time_access_check(server_info, lp_servicename(snum))) {
DEBUG(3, ("print_job_start: job start denied by time check\n"));
release_print_db(pdb);
return (uint32)-1;