commit f4a5bb788db2517c4a968e43098ce93c9e1b89ac
parent 5fdea15d394df019f7d3bb32ecc465b5c5ca9431
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Mon, 20 Jan 2025 16:25:30 +0100
BugFix: possible SEGFAULT on error path
When using variable expansion on the stardis file, the error path could
try to free a garbage pointer.
Diffstat:
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/stardis-parsing.c b/src/stardis-parsing.c
@@ -2492,29 +2492,29 @@ read_model
ERR(txtrdr_read_line(txtrdr));
line = txtrdr_get_line(txtrdr);
if(!line) break;
- word_initialized = 1;
switch(wordexp(line, &pwordexp, flags)) {
case 0: /* No error */
+ word_initialized = 1;
break;
case WRDE_NOSPACE: /* Ran out of memory. */
res = RES_MEM_ERR;
goto error;
case WRDE_BADCHAR: /* A metachar appears in the wrong place. */
logger_print(stardis->logger, LOG_ERROR,
- "%s: word expansion error: invalid character:\n", name);
+ "%s: word expansion error: invalid character.\n", name);
goto exp_error;
case WRDE_BADVAL: /* Undefined var reference with WRDE_UNDEF. */
logger_print(stardis->logger, LOG_ERROR,
- "%s: word expansion error: undefined environment variable:\n", name);
+ "%s: word expansion error: undefined environment variable.\n", name);
goto exp_error;
case WRDE_CMDSUB: /* Command substitution with WRDE_NOCMD. */
logger_print(stardis->logger, LOG_ERROR,
- "%s: word expansion error: command substitution is not enabled:\n",
+ "%s: word expansion error: command substitution is not enabled.\n",
name);
goto exp_error;
case WRDE_SYNTAX: /* Shell syntax error. */
logger_print(stardis->logger, LOG_ERROR,
- "%s: word expansion error: syntax error:\n", name);
+ "%s: word expansion error: syntax error.\n", name);
goto exp_error;
default:
FATAL("Unexpected return code.\n");