summaryrefslogtreecommitdiffstats
path: root/source/printing
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2008-01-11 23:24:13 -0800
committerJeremy Allison <jra@samba.org>2008-01-11 23:24:13 -0800
commit7b9d9fba230b9e61079869a6a2751cda37fb8a9e (patch)
tree322fd868abf6fb8966117e09606ebe9293155817 /source/printing
parent0d2c77e8d3a83f2c5e78fa076f22919ef9d124b9 (diff)
downloadsamba-7b9d9fba230b9e61079869a6a2751cda37fb8a9e.tar.gz
samba-7b9d9fba230b9e61079869a6a2751cda37fb8a9e.tar.xz
samba-7b9d9fba230b9e61079869a6a2751cda37fb8a9e.zip
Fix CID 498. Ensure we don't prs_mem_free an uninitialized
prs_struct. Jeremy.
Diffstat (limited to 'source/printing')
-rw-r--r--source/printing/nt_printing.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c
index 1a4a26ee6f2..bba55c0e4ac 100644
--- a/source/printing/nt_printing.c
+++ b/source/printing/nt_printing.c
@@ -5326,6 +5326,7 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
SEC_DESC_BUF *new_secdesc_ctr = NULL;
SEC_DESC_BUF *old_secdesc_ctr = NULL;
prs_struct ps;
+ bool prs_init_done = false;
TALLOC_CTX *mem_ctx = NULL;
TDB_DATA kbuf;
WERROR status;
@@ -5394,6 +5395,8 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
(uint32)ndr_size_security_descriptor(new_secdesc_ctr->sd, 0)
+ sizeof(SEC_DESC_BUF), mem_ctx, MARSHALL);
+ prs_init_done = true;
+
if (!sec_io_desc_buf("nt_printing_setsec", &new_secdesc_ctr,
&ps, 1)) {
status = WERR_BADFUNC;
@@ -5413,7 +5416,9 @@ WERROR nt_printing_setsec(const char *sharename, SEC_DESC_BUF *secdesc_ctr)
out:
- prs_mem_free(&ps);
+ if (prs_init_done) {
+ prs_mem_free(&ps);
+ }
if (mem_ctx)
talloc_destroy(mem_ctx);
return status;