mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
unifdef: Fix collision check when adding symbols.
findsym() is intended for use while parsing input, so it should not be
called from addsym2() or indirectsym(), which are called before any
input is processed.
MFC after: 1 week
Sponsored by: Klara, Inc.
Reviewed by: kevans
Differential Revision: https://reviews.freebsd.org/D48733
(cherry picked from commit c63af363c2)
This commit is contained in:
parent
250c3c549e
commit
67cead936d
2 changed files with 15 additions and 6 deletions
|
|
@ -1488,7 +1488,7 @@ findsym(const char **strp)
|
|||
static void
|
||||
indirectsym(void)
|
||||
{
|
||||
const char *cp;
|
||||
struct macro key = { 0 };
|
||||
int changed;
|
||||
struct macro *sym, *ind;
|
||||
|
||||
|
|
@ -1497,10 +1497,9 @@ indirectsym(void)
|
|||
RB_FOREACH(sym, MACROMAP, ¯o_tree) {
|
||||
if (sym->value == NULL)
|
||||
continue;
|
||||
cp = sym->value;
|
||||
ind = findsym(&cp);
|
||||
key.name = sym->value;
|
||||
ind = RB_FIND(MACROMAP, ¯o_tree, &key);
|
||||
if (ind == NULL || ind == sym ||
|
||||
*cp != '\0' ||
|
||||
ind->value == NULL ||
|
||||
ind->value == sym->value)
|
||||
continue;
|
||||
|
|
@ -1539,10 +1538,10 @@ addsym1(bool ignorethis, bool definethis, char *symval)
|
|||
static void
|
||||
addsym2(bool ignorethis, const char *symname, const char *val)
|
||||
{
|
||||
const char *cp = symname;
|
||||
struct macro key = { .name = symname };
|
||||
struct macro *sym, *r;
|
||||
|
||||
sym = findsym(&cp);
|
||||
sym = RB_FIND(MACROMAP, ¯o_tree, &key);
|
||||
if (sym == NULL) {
|
||||
sym = calloc(1, sizeof(*sym));
|
||||
sym->ignore = ignorethis;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,17 @@ EOF
|
|||
atf_check -s exit:1 -o inline:"b\n" unifdef -DFOO -DFOO=0 <file
|
||||
}
|
||||
|
||||
atf_test_case sDU
|
||||
sDU_head() {
|
||||
atf_set descr "simultaneous use of -s and -D or -U"
|
||||
}
|
||||
sDU_body() {
|
||||
atf_check unifdef -s -DFOO -UFOO /dev/null
|
||||
atf_check unifdef -s -DFOO -DBAR=FOO /dev/null
|
||||
}
|
||||
|
||||
atf_init_test_cases() {
|
||||
atf_add_test_case hash_comment
|
||||
atf_add_test_case redefine
|
||||
atf_add_test_case sDU
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue