From: Jorge Pereira Date: Wed, 8 Mar 2023 15:17:44 +0000 (-0300) Subject: Fix runtime LSAN/ASAN error in src/main/conffile.c X-Git-Tag: release_3_2_3~147 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d19402a2d541e249a174e1f080322480eb0bb63a;p=thirdparty%2Ffreeradius-server.git Fix runtime LSAN/ASAN error in src/main/conffile.c src/main/conffile.c:1831:49: runtime error: applying zero offset to null pointer --- diff --git a/src/main/conffile.c b/src/main/conffile.c index 8a9297b5d6..42b025bf17 100644 --- a/src/main/conffile.c +++ b/src/main/conffile.c @@ -1803,6 +1803,7 @@ static void cf_section_parse_init(CONF_SECTION *cs, void *base, CONF_PARSER const *variables) { int i; + void *data; for (i = 0; variables[i].name != NULL; i++) { if (variables[i].type == PW_TYPE_SUBSECTION) { @@ -1827,9 +1828,13 @@ static void cf_section_parse_init(CONF_SECTION *cs, void *base, subcs->item.lineno = cs->item.lineno; cf_item_add(cs, &(subcs->item)); } + if (base) { + data = ((uint8_t *)base) + variables[i].offset; + } else { + data = NULL; + } - cf_section_parse_init(subcs, (uint8_t *)base + variables[i].offset, - (CONF_PARSER const *) variables[i].dflt); + cf_section_parse_init(subcs, data, (CONF_PARSER const *) variables[i].dflt); continue; } @@ -1927,8 +1932,13 @@ int cf_section_parse(CONF_SECTION *cs, void *base, CONF_PARSER const *variables) goto finish; } - ret = cf_section_parse(subcs, (uint8_t *)base + variables[i].offset, - (CONF_PARSER const *) variables[i].dflt); + if (base) { + data = ((uint8_t *)base) + variables[i].offset; + } else { + data = NULL; + } + + ret = cf_section_parse(subcs, data, (CONF_PARSER const *) variables[i].dflt); if (ret < 0) goto finish; continue; } /* else it's a CONF_PAIR */