From: Jorge Pereira Date: Thu, 16 Mar 2023 16:12:43 +0000 (-0300) Subject: Fix memory leak in client_add() X-Git-Tag: release_3_2_3~153 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ed85c75ac66b896a42e3095b48db4b0f3b46dee;p=thirdparty%2Ffreeradius-server.git Fix memory leak in client_add() Such error when we run: radiusd -CX Configuration appears to be OK Allocated memory at time of report: Current state of talloced memory: full talloc report on 'null_context' (total 1057 bytes in 4 blocks) autofree_context contains 1 bytes in 2 blocks (ref 0) 0x608000000400 bool contains 1 bytes in 1 blocks (ref 0) 0x60b000044a90 RADCLIENT_LIST contains 1056 bytes in 1 blocks (ref 0) 0x6190000032e0 ================================================================= ==43730==ERROR: LeakSanitizer: detected memory leaks Direct leak of 1152 byte(s) in 1 object(s) allocated from: #0 0x5603d1a170be in malloc (/__w/freeradius-server/freeradius-server/build/bin/local/radiusd+0x20b0be) (BuildId: acbe3a0941626cf6f01ae6b2c12df877fb8fc009) #1 0x7f2c07e40c86 in _talloc_zero (/lib/x86_64-linux-gnu/libtalloc.so.2+0x6c86) (BuildId: f3c1074a602981acb4683b4df6b7733b104ba7d4) #2 0x5603d1a62780 in client_list_init (/__w/freeradius-server/freeradius-server/build/bin/local/radiusd+0x256780) (BuildId: acbe3a0941626cf6f01ae6b2c12df877fb8fc009) #3 0x5603d1a62a4a in client_add (/__w/freeradius-server/freeradius-server/build/bin/local/radiusd+0x256a4a) (BuildId: acbe3a0941626cf6f01ae6b2c12df877fb8fc009) #4 0x5603d1a6b713 in client_list_parse_section (/__w/freeradius-server/freeradius-server/build/bin/local/radiusd+0x25f713) (BuildId: acbe3a0941626cf6f01ae6b2c12df877fb8fc009) #5 0x5603d1ae8532 in main_config_init (/__w/freeradius-server/freeradius-server/build/bin/local/radiusd+0x2dc532) (BuildId: acbe3a0941626cf6f01ae6b2c12df877fb8fc009) #6 0x5603d1b45bc4 in main (/__w/freeradius-server/freeradius-server/build/bin/local/radiusd+0x339bc4) (BuildId: acbe3a0941626cf6f01ae6b2c12df877fb8fc009) #7 0x7f2c07981082 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24082) (BuildId: 1878e6b475720c7c51969e69ab2d276fae6d1dee) #8 0x5603d19924fd in _start (/__w/freeradius-server/freeradius-server/build/bin/local/radiusd+0x1864fd) (BuildId: acbe3a0941626cf6f01ae6b2c12df877fb8fc009) SUMMARY: AddressSanitizer: 1152 byte(s) leaked in 1 allocation(s). --- diff --git a/src/main/client.c b/src/main/client.c index b5c38d408f..305871260c 100644 --- a/src/main/client.c +++ b/src/main/client.c @@ -179,7 +179,8 @@ bool client_add(RADCLIENT_LIST *clients, RADCLIENT *client) * Initialize the global list, if not done already. */ if (!root_clients) { - root_clients = client_list_init(NULL); + root_clients = cf_data_find(main_config.config, "clients"); + if (!root_clients) root_clients = client_list_init(main_config.config); if (!root_clients) { ERROR("Cannot add client - failed creating client list"); return false;