diff options
author | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-11-25 17:49:15 +0100 |
---|---|---|
committer | Mikael Magnusson <mikma@users.sourceforge.net> | 2023-11-25 17:49:15 +0100 |
commit | 2bb5b0cc7d20501d0d0afcf8998bf9b0dccb13bc (patch) | |
tree | 84bf6e96d50a74944f0b85d1565bed542f606536 | |
parent | 772b80cc1392a52c9275c2290cc8b0c08cd9fdfa (diff) | |
parent | 6b95353ebdaa724252492f941ebe75f80e9e545a (diff) |
Merge commit '6b95353ebdaa724252492f941ebe75f80e9e545a' into wireguard-next-tmp7-1
-rw-r--r-- | conf/cf-lex.l | 5 | ||||
-rw-r--r-- | conf/conf.h | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l index 1054f33f..4ff28579 100644 --- a/conf/cf-lex.l +++ b/conf/cf-lex.l @@ -616,6 +616,9 @@ static inline void cf_swap_soft_scope(struct config *conf); static struct symbol * cf_new_symbol(struct sym_scope *scope, pool *p, struct linpool *lp, const byte *c) { + if (scope->readonly) + cf_error("Unknown symbol %s", c); + struct symbol *s; uint l = strlen(c); @@ -769,6 +772,8 @@ cf_lex_init(int is_cli, struct config *c) sym->class = SYM_KEYWORD; sym->keyword = k; } + + global_root_scope->readonly = 1; } ifs_head = ifs = push_ifs(NULL); diff --git a/conf/conf.h b/conf/conf.h index ec8c97e8..8558fcba 100644 --- a/conf/conf.h +++ b/conf/conf.h @@ -137,9 +137,10 @@ struct sym_scope { HASH(struct symbol) hash; /* Local symbol hash */ uint slots; /* Variable slots */ - byte active; /* Currently entered */ - byte block; /* No independent stack frame */ byte soft_scopes; /* Number of soft scopes above */ + byte active:1; /* Currently entered */ + byte block:1; /* No independent stack frame */ + byte readonly:1; /* Do not add new symbols */ }; extern struct sym_scope *global_root_scope; |