[PATCH 01/27] groupdb: don't leak state_path onto talloc tos
Michael Croes
mycroes at gmail.com
Wed Nov 5 01:34:04 MST 2014
Hi David,
Isn't this missing 'talloc_free(tdb_path);' in 'if (ldb_path == NULL) {'?
Regards,
Michael
Op Sun Nov 02 2014 at 8:23:11 PM schreef David Disseldorp <ddiss at samba.org>:
> 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