From: Michael Brown Date: Sun, 16 Feb 2020 22:30:38 +0000 (+0000) Subject: [settings] Eliminate variable-length stack allocation X-Git-Tag: v1.21.1~168 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=446e8f14e8a22731b52bad45d94b09f6f1672bd9;p=thirdparty%2Fipxe.git [settings] Eliminate variable-length stack allocation Signed-off-by: Michael Brown --- diff --git a/src/core/settings.c b/src/core/settings.c index 3e5d416e7..430cdc84b 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -370,12 +370,14 @@ const char * settings_name ( struct settings *settings ) { static struct settings * parse_settings_name ( const char *name, get_child_settings_t get_child ) { struct settings *settings = &settings_root; - char name_copy[ strlen ( name ) + 1 ]; + char *name_copy; char *subname; char *remainder; /* Create modifiable copy of name */ - memcpy ( name_copy, name, sizeof ( name_copy ) ); + name_copy = strdup ( name ); + if ( ! name_copy ) + return NULL; remainder = name_copy; /* Parse each name component in turn */ @@ -389,6 +391,9 @@ parse_settings_name ( const char *name, get_child_settings_t get_child ) { break; } + /* Free modifiable copy of name */ + free ( name_copy ); + return settings; }