diff options
author | David Disseldorp <ddiss@samba.org> | 2014-10-06 18:21:15 +0200 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2014-10-06 19:18:05 +0200 |
commit | 58b18e23e9de221e80fe978366ef05b65312919b (patch) | |
tree | 590a2882d3ae446b5b7966c38c54b6c8f7aa3e63 /source3/printing/printing.c | |
parent | 3c592eaac6db32843cde480226424e71312a853f (diff) | |
download | samba-58b18e23e9de221e80fe978366ef05b65312919b.tar.gz samba-58b18e23e9de221e80fe978366ef05b65312919b.tar.xz samba-58b18e23e9de221e80fe978366ef05b65312919b.zip |
printing: don't leak cache_path onto talloc tos
Also check for allocation failures.
Reported-by: Franz Pförtsch <franz.pfoertsch@brose.com>
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/printing/printing.c')
-rw-r--r-- | source3/printing/printing.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source3/printing/printing.c b/source3/printing/printing.c index dcfd2a2dc5..d8b619162e 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -198,17 +198,28 @@ bool print_backend_init(struct messaging_context *msg_ctx) int services = lp_numservices(); int snum; bool ok; + char *print_cache_path; if (!printer_list_parent_init()) { return false; } - ok = directory_create_or_exist(cache_path("printing"), 0755); + print_cache_path = cache_path("printing"); + if (print_cache_path == NULL) { + return false; + } + ok = directory_create_or_exist(print_cache_path, 0755); + TALLOC_FREE(print_cache_path); if (!ok) { return false; } - unlink(cache_path("printing.tdb")); + print_cache_path = cache_path("printing.tdb"); + if (print_cache_path == NULL) { + return false; + } + unlink(print_cache_path); + TALLOC_FREE(print_cache_path); /* handle a Samba upgrade */ |