nmbd: don't leak cache_path onto talloc tos
authorDavid Disseldorp <ddiss@samba.org>
Mon, 6 Oct 2014 16:21:16 +0000 (18:21 +0200)
committerJeremy Allison <jra@samba.org>
Mon, 6 Oct 2014 17:18:05 +0000 (19:18 +0200)
Reported-by: Franz Pförtsch <franz.pfoertsch@brose.com>
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/nmbd/nmbd_serverlistdb.c

index f697f05efe19b2b06cb5da735605ac907d3c309f..56f400f6e32fbba9216dcfab00f050a95a7f62f2 100644 (file)
@@ -311,6 +311,7 @@ void write_browse_list(time_t t, bool force_write)
        fnamenew = talloc_asprintf(ctx, "%s.",
                                fname);
        if (!fnamenew) {
+               talloc_free(fname);
                return;
        }
 
@@ -319,6 +320,8 @@ void write_browse_list(time_t t, bool force_write)
        if (!fp) {
                DEBUG(0,("write_browse_list: Can't open file %s. Error was %s\n",
                        fnamenew,strerror(errno)));
+               talloc_free(fnamenew);
+               talloc_free(fname);
                return;
        }
 
@@ -331,6 +334,8 @@ void write_browse_list(time_t t, bool force_write)
                DEBUG(0,("write_browse_list: Fatal error - cannot find my workgroup %s\n",
                        lp_workgroup()));
                x_fclose(fp);
+               talloc_free(fnamenew);
+               talloc_free(fname);
                return;
        }
 
@@ -399,4 +404,6 @@ void write_browse_list(time_t t, bool force_write)
        chmod(fnamenew,0644);
        rename(fnamenew,fname);
        DEBUG(3,("write_browse_list: Wrote browse list into file %s\n",fname));
+       talloc_free(fnamenew);
+       talloc_free(fname);
 }