[PATCH 01/27] groupdb: don't leak state_path onto talloc tos
David Disseldorp
ddiss at samba.org
Sun Nov 2 12:21:23 MST 2014
Also check for allocation failures.
Signed-off-by: David Disseldorp <ddiss at samba.org>
---
source3/groupdb/mapping_tdb.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/source3/groupdb/mapping_tdb.c b/source3/groupdb/mapping_tdb.c
index cc397d9..ab79b68 100644
--- a/source3/groupdb/mapping_tdb.c
+++ b/source3/groupdb/mapping_tdb.c
@@ -46,24 +46,35 @@ static bool mapping_switch(const char *ldb_path);
****************************************************************************/
static bool init_group_mapping(void)
{
- const char *ldb_path;
+ char *tdb_path;
+ char *ldb_path;
if (db != NULL) {
return true;
}
- db = db_open(NULL, state_path("group_mapping.tdb"), 0,
+ tdb_path = state_path("group_mapping.tdb");
+ if (tdb_path == NULL) {
+ return false;
+ }
+ db = db_open(NULL, tdb_path, 0,
TDB_DEFAULT, O_RDWR|O_CREAT, 0600,
DBWRAP_LOCK_ORDER_1, DBWRAP_FLAG_NONE);
if (db == NULL) {
DEBUG(0, ("Failed to open group mapping database: %s\n",
strerror(errno)));
+ talloc_free(tdb_path);
return false;
}
ldb_path = state_path("group_mapping.ldb");
+ if (ldb_path == NULL) {
+ return false;
+ }
if (file_exist(ldb_path) && !mapping_switch(ldb_path)) {
- unlink(state_path("group_mapping.tdb"));
+ unlink(tdb_path);
+ talloc_free(tdb_path);
+ talloc_free(ldb_path);
return false;
} else {
@@ -114,6 +125,8 @@ static bool init_group_mapping(void)
}
#endif
}
+ talloc_free(tdb_path);
+ talloc_free(ldb_path);
return true;
}
--
1.8.4.5
More information about the samba-technical
mailing list