1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00

lib/messages.c: Check return from chainlock before modifying message queue.

Apply the job returned limit across all requests for job queues.
Jeremy.
This commit is contained in:
Jeremy Allison 0001-01-01 00:00:00 +00:00
parent 55681422e9
commit bf795b684e
3 changed files with 8 additions and 7 deletions

View File

@ -315,7 +315,9 @@ static BOOL retrieve_all_messages(char **msgs_buf, size_t *total_len)
kbuf = message_key_pid(sys_getpid());
tdb_chainlock(tdb, kbuf);
if (tdb_chainlock(tdb, kbuf) == -1)
return False;
dbuf = tdb_fetch(tdb, kbuf);
/*
* Replace with an empty record to keep the allocated

View File

@ -1959,6 +1959,7 @@ int print_queue_status(int snum,
TDB_DATA data, key;
const char *printername;
struct tdb_print_db *pdb;
int max_reported_jobs = lp_max_reported_jobs(snum);
/* make sure the database is up to date */
@ -2033,6 +2034,10 @@ int print_queue_status(int snum,
QSORT_CAST(printjob_comp));
*queue = tstruct.queue;
if (max_reported_jobs && tstruct.qcount > max_reported_jobs)
tstruct.qcount = max_reported_jobs;
return tstruct.qcount;
}

View File

@ -6353,7 +6353,6 @@ WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJO
int snum;
print_status_struct prt_status;
print_queue_struct *queue=NULL;
int max_rep_jobs;
/* that's an [in out] buffer */
spoolss_move_buffer(q_u->buffer, &r_u->buffer);
@ -6367,8 +6366,6 @@ WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJO
if (!get_printer_snum(p, handle, &snum))
return WERR_BADFID;
max_rep_jobs = lp_max_reported_jobs(snum);
*returned = print_queue_status(snum, &queue, &prt_status);
DEBUGADD(4,("count:[%d], status:[%d], [%s]\n", *returned, prt_status.status, prt_status.message));
@ -6377,9 +6374,6 @@ WERROR _spoolss_enumjobs( pipes_struct *p, SPOOL_Q_ENUMJOBS *q_u, SPOOL_R_ENUMJO
return WERR_OK;
}
if (max_rep_jobs && (*returned > max_rep_jobs))
*returned = max_rep_jobs;
switch (level) {
case 1:
return enumjobs_level1(queue, snum, buffer, offered, needed, returned);