[settings] Eliminate variable-length stack allocation

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/106/head
Michael Brown 2020-02-16 22:30:38 +00:00
parent 0a74321915
commit 446e8f14e8
1 changed files with 7 additions and 2 deletions

View File

@ -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;
}