From f62d9080ad143a35c7825f187c8f7eea9def9810 Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Sun, 2 Nov 2014 20:21:25 +0100 Subject: sharesec: don't leak state_path onto talloc tos Also check for allocation failures. Signed-off-by: David Disseldorp Reviewed-by: Jeremy Allison --- source3/lib/sharesec.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source3/lib/sharesec.c b/source3/lib/sharesec.c index 095c851825..e9a3eae917 100644 --- a/source3/lib/sharesec.c +++ b/source3/lib/sharesec.c @@ -142,19 +142,27 @@ bool share_info_db_init(void) int32 vers_id = 0; bool upgrade_ok = true; NTSTATUS status; + char *db_path; if (share_db != NULL) { return True; } - share_db = db_open(NULL, state_path("share_info.tdb"), 0, + db_path = state_path("share_info.tdb"); + if (db_path == NULL) { + return false; + } + + share_db = db_open(NULL, db_path, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600, DBWRAP_LOCK_ORDER_1, DBWRAP_FLAG_NONE); if (share_db == NULL) { DEBUG(0,("Failed to open share info database %s (%s)\n", - state_path("share_info.tdb"), strerror(errno) )); + db_path, strerror(errno))); + TALLOC_FREE(db_path); return False; } + TALLOC_FREE(db_path); status = dbwrap_fetch_int32_bystring(share_db, vstring, &vers_id); if (!NT_STATUS_IS_OK(status)) { -- cgit