[master] 6b1305fa8 smd: Plug inconsequential leak

Dridi Boukelmoune dridi.boukelmoune at gmail.com
Mon Jun 27 07:08:08 UTC 2022


commit 6b1305fa87fd0d8ee74c7c68b88e035a3aef02fa
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date:   Mon Jun 27 09:00:03 2022 +0200

    smd: Plug inconsequential leak
    
    The debug stevedore only acts as a wrapper around the malloc storage, so
    it proxies its initialization method. The allocation of av isn't tracked
    so it leaks when it runs out of scope, along with the copies of values
    assigned to the array.
    
    Since a reference to aav is kept in stevedore::av, we can safely pass
    direct references to arguments to the underlying malloc storage instead
    of copies.
    
    Spotted by asan.

diff --git a/bin/varnishd/storage/storage_debug.c b/bin/varnishd/storage/storage_debug.c
index 1ab497e50..9a3360a42 100644
--- a/bin/varnishd/storage/storage_debug.c
+++ b/bin/varnishd/storage/storage_debug.c
@@ -80,7 +80,7 @@ smd_init(struct stevedore *parent, int aac, char * const *aav)
 			methods->objgetspace = smd_lsp_getspace;
 			continue;
 		}
-		REPLACE(av[ac], aav[i]);
+		av[ac] = aav[i];
 		ac++;
 	}
 	assert(ac >= 0);
@@ -88,6 +88,7 @@ smd_init(struct stevedore *parent, int aac, char * const *aav)
 	AZ(av[ac]);
 
 	sma_stevedore.init(parent, ac, av);
+	free(av);
 }
 
 const struct stevedore smd_stevedore = {


More information about the varnish-commit mailing list