From 1fbe5cc67849703e9b10371d56cc05afc343381c Mon Sep 17 00:00:00 2001 From: aviralgarg05 Date: Fri, 24 Jul 2026 00:33:43 +0530 Subject: [PATCH] games/NXDoom: Preserve defaults for invalid integer settings. Check integer conversions before updating bound configuration values. This keeps compiled defaults intact for malformed non-numeric values instead of propagating an uninitialized result from sscanf(). Assisted-by: Codex:gpt-5 Signed-off-by: aviralgarg05 --- games/NXDoom/src/m_config.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/games/NXDoom/src/m_config.c b/games/NXDoom/src/m_config.c index af29eeab0..9e3fb879e 100644 --- a/games/NXDoom/src/m_config.c +++ b/games/NXDoom/src/m_config.c @@ -1982,16 +1982,14 @@ static void save_default_collection(default_collection_t *collection) * ****************************************************************************/ -static int parse_int_parameter(const char *strparm) +static int parse_int_parameter(const char *strparm, int *param) { - int param; - if (strparm[0] == '0' && strparm[1] == 'x') - sscanf(strparm + 2, "%x", (unsigned int *)¶m); - else - sscanf(strparm, "%i", ¶m); + { + return sscanf(strparm + 2, "%x", (unsigned int *)param) == 1; + } - return param; + return sscanf(strparm, "%i", param) == 1; } static void set_variable(default_t *def, const char *value) @@ -2008,7 +2006,11 @@ static void set_variable(default_t *def, const char *value) case DEFAULT_INT: case DEFAULT_INT_HEX: - *def->location.i = parse_int_parameter(value); + if (parse_int_parameter(value, &intparm)) + { + *def->location.i = intparm; + } + break; case DEFAULT_KEY: @@ -2017,7 +2019,11 @@ static void set_variable(default_t *def, const char *value) * file (save the old value in untranslated) */ - intparm = parse_int_parameter(value); + if (!parse_int_parameter(value, &intparm)) + { + break; + } + def->untranslated = intparm; if (intparm >= 0 && intparm < 128) {