From 44df31e442d0ede1df6097cc557b85bb2ecc3a50 Mon Sep 17 00:00:00 2001 From: stefanrueger Date: Sat, 1 Aug 2026 21:12:04 +0200 Subject: [PATCH] Harden cfg_infile use --- src/config.c | 7 ++----- src/config_gram.y | 10 +++++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/config.c b/src/config.c index dd4ed3e6..f5d73a39 100644 --- a/src/config.c +++ b/src/config.c @@ -443,13 +443,10 @@ int read_config(const char *file) { yylex_destroy(); #endif + mmt_free(cfg_infile); + cfg_infile = NULL; fclose(f); - if(cfg_infile) { - mmt_free(cfg_infile); - cfg_infile = NULL; - } - return rc; } diff --git a/src/config_gram.y b/src/config_gram.y index 4e32ae70..f4f6643d 100644 --- a/src/config_gram.y +++ b/src/config_gram.y @@ -300,7 +300,7 @@ prog_def : prog_decl : K_PROGRAMMER { current_prog = pgm_new(); - current_prog->config_file = cache_string(cfg_infile); + current_prog->config_file = cache_string(cfg_infile? cfg_infile: "unknown"); current_prog->lineno = cfg_lineno; } | @@ -315,7 +315,7 @@ prog_decl : current_prog = pgm_dup(pgm); current_prog->parent_id = cache_string($3->value.string); current_prog->comments = NULL; - current_prog->config_file = cache_string(cfg_infile); + current_prog->config_file = cache_string(cfg_infile? cfg_infile: "unknown"); current_prog->lineno = cfg_lineno; free_token($3); } @@ -428,7 +428,7 @@ part_decl : K_PART { current_part = avr_new_part(); - current_part->config_file = cache_string(cfg_infile); + current_part->config_file = cache_string(cfg_infile? cfg_infile: "unknown"); current_part->lineno = cfg_lineno; } | K_PART K_PARENT TKN_STRING @@ -443,7 +443,7 @@ part_decl : current_part = avr_dup_part(parent_part); current_part->parent_id = cache_string($3->value.string); current_part->comments = NULL; - current_part->config_file = cache_string(cfg_infile); + current_part->config_file = cache_string(cfg_infile? cfg_infile: "unknown"); current_part->lineno = cfg_lineno; free_token($3); @@ -1065,7 +1065,7 @@ mem_spec : { int ps = $3->value.number; if(ps <= 0) - pmsg_warning("invalid page size %d, ignored [%s:%d]\n", ps, cfg_infile, cfg_lineno); + pmsg_warning("invalid page size %d, ignored [%s:%d]\n", ps, cfg_infile? cfg_infile: "unknown", cfg_lineno); else current_mem->page_size = ps; free_token($3);