[PATCH 03/27] sharesec: don't leak state_path onto talloc tos

David Disseldorp ddiss at samba.org
Sun Nov 2 12:21:25 MST 2014


Also check for allocation failures.

Signed-off-by: David Disseldorp <ddiss at samba.org>
---
 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 095c851..e9a3eae 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)) {
-- 
1.8.4.5



More information about the samba-technical mailing list