BUG/MINOR: haproxy: Free proxy->unique_id_header during deinit

Given the following example configuration:

    frontend foo
    	mode http
    	bind *:8080
    	unique-id-header x

Running a configuration check with valgrind reports:

    ==17621== 2 bytes in 1 blocks are definitely lost in loss record 1 of 341
    ==17621==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==17621==    by 0x649E489: strdup (strdup.c:42)
    ==17621==    by 0x4A87F1: cfg_parse_listen (cfgparse-listen.c:2747)
    ==17621==    by 0x494C59: readcfgfile (cfgparse.c:2049)
    ==17621==    by 0x545095: init (haproxy.c:2029)
    ==17621==    by 0x421E42: main (haproxy.c:3167)

After this patch is applied the leak is gone as expected.

This is a very minor leak that can only be observed if deinit() is called,
shortly before the OS will free all memory of the process anyway. No
backport needed.
This commit is contained in:
Tim Duesterhus 2020-07-04 11:49:42 +02:00 committed by Willy Tarreau
parent cb8f13c26d
commit 18c63591f0

View File

@ -2626,6 +2626,7 @@ void deinit(void)
free(p->conf.lfs_file); free(p->conf.lfs_file);
free(p->conf.uniqueid_format_string); free(p->conf.uniqueid_format_string);
istfree(&p->header_unique_id);
free(p->conf.uif_file); free(p->conf.uif_file);
if ((p->lbprm.algo & BE_LB_LKUP) == BE_LB_LKUP_MAP) if ((p->lbprm.algo & BE_LB_LKUP) == BE_LB_LKUP_MAP)
free(p->lbprm.map.srv); free(p->lbprm.map.srv);