diff options
author | Jeremy Allison <jra@samba.org> | 2006-03-08 01:18:18 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:11:04 -0500 |
commit | 3527b5cc25d4177e860745b16409984610ed11df (patch) | |
tree | f3621328b31552ac354c7bc3d0b27346623aa853 /source3/printing | |
parent | dbbc06db652129986916c503b292ded70f6e8bc9 (diff) | |
download | samba-3527b5cc25d4177e860745b16409984610ed11df.tar.gz samba-3527b5cc25d4177e860745b16409984610ed11df.tar.bz2 samba-3527b5cc25d4177e860745b16409984610ed11df.zip |
r14003: Clarify code that lead to Coverity report #13.
Not a bug, but better to remove false positives.
Jeremy.
(This used to be commit f9a75d76546bc4618736f0d48646e77d7572db25)
Diffstat (limited to 'source3/printing')
-rw-r--r-- | source3/printing/lpq_parse.c | 2 | ||||
-rw-r--r-- | source3/printing/print_generic.c | 27 |
2 files changed, 16 insertions, 13 deletions
diff --git a/source3/printing/lpq_parse.c b/source3/printing/lpq_parse.c index 68c06ade41..7e81b5187c 100644 --- a/source3/printing/lpq_parse.c +++ b/source3/printing/lpq_parse.c @@ -971,7 +971,7 @@ BOOL parse_lpq_entry(enum printing_types printing_type,char *line, } /* in the LPRNG case, we skip lines starting by a space.*/ - if (line && !ret && (printing_type==PRINT_LPRNG) ) + if (!ret && (printing_type==PRINT_LPRNG) ) { if (line[0]==' ') return ret; diff --git a/source3/printing/print_generic.c b/source3/printing/print_generic.c index 18fca67860..cb1c951ff7 100644 --- a/source3/printing/print_generic.c +++ b/source3/printing/print_generic.c @@ -193,21 +193,24 @@ static int generic_queue_get(const char *printer_name, /* turn the lpq output into a series of job structures */ qcount = 0; ZERO_STRUCTP(status); - if (numlines) + if (numlines) { queue = SMB_MALLOC_ARRAY(print_queue_struct, numlines+1); - - if (queue) { - memset(queue, '\0', sizeof(print_queue_struct)*(numlines+1)); - for (i=0; i<numlines; i++) { - /* parse the line */ - if (parse_lpq_entry(printing_type,qlines[i], - &queue[qcount],status,qcount==0)) { - qcount++; - } - } + if (!queue) { + file_lines_free(qlines); + *q = NULL; + return 0; + } } - file_lines_free(qlines); + memset(queue, '\0', sizeof(print_queue_struct)*(numlines+1)); + for (i=0; i<numlines; i++) { + /* parse the line */ + if (parse_lpq_entry(printing_type,qlines[i], + &queue[qcount],status,qcount==0)) { + qcount++; + } + } + file_lines_free(qlines); *q = queue; return qcount; } |