diff options
author | Andreas Schneider <asn@samba.org> | 2012-12-10 15:11:23 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2012-12-12 15:00:02 +0100 |
commit | b4884dcff7362d585d93c3acf08e8c4835d918d0 (patch) | |
tree | 0e0d01235dcb054704e6c4029db91e1906bd2f81 /source3/libsmb | |
parent | b4accd365d4758f3f4453083c24c59615051d863 (diff) | |
download | samba-b4884dcff7362d585d93c3acf08e8c4835d918d0.tar.gz samba-b4884dcff7362d585d93c3acf08e8c4835d918d0.tar.bz2 samba-b4884dcff7362d585d93c3acf08e8c4835d918d0.zip |
s3-libsmb: Fix possible comparsion problems.
This makes the code also easier to understand.
Found by Coverity.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/libsmb_printjob.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/source3/libsmb/libsmb_printjob.c b/source3/libsmb/libsmb_printjob.c index db46ceee9c..173fa327d3 100644 --- a/source3/libsmb/libsmb_printjob.c +++ b/source3/libsmb/libsmb_printjob.c @@ -93,6 +93,8 @@ SMBC_print_file_ctx(SMBCCTX *c_file, { SMBCFILE *fid1; SMBCFILE *fid2; + smbc_open_fn f_open1; + smbc_open_print_job_fn f_open_pj2; int bytes; int saverr; int tot_bytes = 0; @@ -113,18 +115,30 @@ SMBC_print_file_ctx(SMBCCTX *c_file, } /* Try to open the file for reading ... */ + f_open1 = smbc_getFunctionOpen(c_file); + if (f_open1 == NULL) { + errno = EINVAL; + TALLOC_FREE(frame); + return -1; + } - if ((long)(fid1 = smbc_getFunctionOpen(c_file)(c_file, fname, - O_RDONLY, 0666)) < 0) { - DEBUG(3, ("Error, fname=%s, errno=%i\n", fname, errno)); + fid1 = f_open1(c_file, fname, O_RDONLY, 0666); + if (fid1 < 0) { + DEBUG(3, ("Error, fname=%s, errno=%i\n", fname, errno)); TALLOC_FREE(frame); - return -1; /* smbc_open sets errno */ - } + return -1; /* smbc_open sets errno */ + } /* Now, try to open the printer file for writing */ + f_open_pj2 = smbc_getFunctionOpenPrintJob(c_print); + if (f_open_pj2 == NULL) { + errno = EINVAL; + TALLOC_FREE(frame); + return -1; + } - if ((long)(fid2 = smbc_getFunctionOpenPrintJob(c_print)(c_print, - printq)) < 0) { + fid2 = f_open_pj2(c_print, printq); + if (fid2 < 0) { saverr = errno; /* Save errno */ smbc_getFunctionClose(c_file)(c_file, fid1); errno = saverr; |