From: Alan T. DeKok Date: Thu, 1 May 2025 16:05:30 +0000 (-0400) Subject: use less memory. Don't allocate struct and then over-write it X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fci-debug;p=thirdparty%2Ffreeradius-server.git use less memory. Don't allocate struct and then over-write it --- diff --git a/src/lib/io/master.c b/src/lib/io/master.c index 2dd8281586..9d653aa15f 100644 --- a/src/lib/io/master.c +++ b/src/lib/io/master.c @@ -1090,7 +1090,6 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client, { size_t len; fr_io_track_t *track, *old; - fr_io_address_t *my_address; *is_dup = false; @@ -1098,17 +1097,21 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client, * Allocate a new tracking structure. Most of the time * there are no duplicates, so this is fine. */ - MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + sizeof(track->address) + 64)); - MEM(track->address = my_address = talloc_zero(track, fr_io_address_t)); - - memcpy(my_address, address, sizeof(*address)); - my_address->radclient = client->radclient; - - track->client = client; if (client->connection) { + MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + sizeof(track->address) + 64)); track->address = client->connection->address; + } else { + fr_io_address_t *my_address; + + MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + 64)); + MEM(track->address = my_address = talloc(track, fr_io_address_t)); + + *my_address = *address; + my_address->radclient = client->radclient; } + track->client = client; + track->timestamp = recv_time; track->packets = 1;