diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2021-06-06 19:10:33 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2021-06-06 19:10:33 +0200 |
commit | 8eea396baf2bd73ea846a48e82d5c42fc2aec6d5 (patch) | |
tree | f2e82567d3d0ceee07d7ed78b239cdb48ca63a85 | |
parent | ee9516dbe85b7205c6c8e400780c5a25787d6bff (diff) |
Nest: Fix password list parsing code
One of previous patches broke password list parsing code, fix that.
-rw-r--r-- | nest/config.Y | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/nest/config.Y b/nest/config.Y index 45d18679..94f9b5dc 100644 --- a/nest/config.Y +++ b/nest/config.Y @@ -38,13 +38,18 @@ iface_patt_check(void) } static inline void -init_password(const void *key, uint length, uint id) +init_password_list(void) { if (!this_p_list) { this_p_list = cfg_allocz(sizeof(list)); init_list(this_p_list); password_id = 1; } +} + +static inline void +init_password(const void *key, uint length, uint id) +{ this_p_item = cfg_allocz(sizeof (struct password_item)); this_p_item->password = key; this_p_item->length = length; @@ -494,6 +499,10 @@ mrtdump_flag: /* Password lists */ password_list: + password_list_body +; + +password_list_body: PASSWORDS '{' password_items '}' | password_item ; @@ -509,8 +518,8 @@ password_item: ; password_item_begin: - PASSWORD text { init_password($2, strlen($2), password_id++); } - | PASSWORD BYTESTRING { init_password($2->data, $2->length, password_id++); } + PASSWORD text { init_password_list(); init_password($2, strlen($2), password_id++); } + | PASSWORD BYTESTRING { init_password_list(); init_password($2->data, $2->length, password_id++); } ; password_item_params: |