From 95c2967252162e9a4b8462f9304d4b81a7d59b81 Mon Sep 17 00:00:00 2001 From: Pavel Punsky Date: Mon, 2 Oct 2023 07:20:14 -0700 Subject: [PATCH] Fix memleak in pgsql_reread_realms (#1278) Fixes #1259 If `ur_string_map_put ` fails then the string that was just `strdup`-ed will leak memory Now the return value is checked and memory free-ed in case of failure --- src/apps/relay/dbdrivers/dbd_pgsql.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/apps/relay/dbdrivers/dbd_pgsql.c b/src/apps/relay/dbdrivers/dbd_pgsql.c index ac53544..29e4207 100644 --- a/src/apps/relay/dbdrivers/dbd_pgsql.c +++ b/src/apps/relay/dbdrivers/dbd_pgsql.c @@ -777,7 +777,10 @@ static void pgsql_reread_realms(secrets_list_t *realms_list) { if (rval) { get_realm(rval); ur_string_map_value_type value = strdup(rval); - ur_string_map_put(o_to_realm_new, (ur_string_map_key_type)oval, value); + int ret = ur_string_map_put(o_to_realm_new, (ur_string_map_key_type)oval, value); + if (ret == -1) { + free(value); + } } } }