From f36a0d408b1ffa7609fb53de8680cdf26153ba12 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Sun, 22 Sep 2019 13:33:23 +0200 Subject: [PATCH] libnm: avoid heap allocation in _nm_utils_strdict_to_dbus() --- libnm-core/nm-utils.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index ae48b16af4..e62bd8d097 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -825,9 +825,15 @@ _nm_utils_strdict_to_dbus (const GValue *prop_value) if (len == 1) g_variant_builder_add (&builder, "{ss}", key, value); else { - gs_free NMUtilsNamedValue *idx = NULL; + gs_free NMUtilsNamedValue *idx_free = NULL; + NMUtilsNamedValue *idx; + + if (len > 300 / sizeof (NMUtilsNamedValue)) { + idx_free = g_new (NMUtilsNamedValue, len); + idx = idx_free; + } else + idx = g_alloca (sizeof (NMUtilsNamedValue) * len); - idx = g_new (NMUtilsNamedValue, len); i = 0; do { idx[i].name = key;