[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