From 00bcce475b06d930fd831c2bf11dc58a0a85b3c9 Mon Sep 17 00:00:00 2001 From: PartialVolume <22084881+PartialVolume@users.noreply.github.com> Date: Thu, 28 Mar 2024 17:17:19 +0000 Subject: [PATCH] Fix valgrind jump or move on unconditional --- src/conf.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/conf.c b/src/conf.c index 13deffa4..e0dcdcdc 100644 --- a/src/conf.c +++ b/src/conf.c @@ -392,11 +392,12 @@ int nwipe_conf_update_setting( char* group_name_setting_name, char* setting_valu int nwipe_conf_read_setting( char* group_name_setting_name, const char** setting_value ) { - /* You would call this function if you wanted to read a settings value in nwipe.conf, i.e + /* This function returns a setting value from nwipe's configuration file nwipe.conf + * when provided with a groupname.settingname string. * + * Example: * const char ** pReturnString; * nwipe_conf_read_setting( "PDF_Certificate", "PDF_Enable", pReturnString ); - * */ /* Separate group_name_setting_name i.e "PDF_Certificate.PDF_Enable" string @@ -406,20 +407,20 @@ int nwipe_conf_read_setting( char* group_name_setting_name, const char** setting int return_status; int length = strlen( group_name_setting_name ); - char* group_name = malloc( length ); - char* setting_name = malloc( length ); + char* group_name = calloc( length, sizeof( char ) ); + char* setting_name = calloc( length, sizeof( char ) ); int idx = 0; while( group_name_setting_name[idx] != 0 && group_name_setting_name[idx] != '.' ) { - if( group_name_setting_name[idx] == '.' ) - { - break; - } idx++; } + // Copy the group name from the combined input string memcpy( group_name, group_name_setting_name, idx ); + group_name[idx] = '\0'; // Null-terminate group_name + + // Copy the setting name from the combined input string strcpy( setting_name, &group_name_setting_name[idx + 1] ); if( !( setting = config_lookup( &nwipe_cfg, group_name ) ) )