]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Fix memory leak in client_add()
authorJorge Pereira <jpereiran@gmail.com>
Thu, 16 Mar 2023 16:12:43 +0000 (13:12 -0300)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 16 Mar 2023 22:46:48 +0000 (18:46 -0400)
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).

src/main/client.c

index b5c38d408f8f9db64e64cfa26dbee080cc4f3307..305871260ca349e758ac7d89c2bc265536a16e59 100644 (file)
@@ -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;