aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2021-06-06 19:10:33 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2021-06-06 19:10:33 +0200
commit8eea396baf2bd73ea846a48e82d5c42fc2aec6d5 (patch)
treef2e82567d3d0ceee07d7ed78b239cdb48ca63a85
parentee9516dbe85b7205c6c8e400780c5a25787d6bff (diff)
downloadbird-8eea396baf2bd73ea846a48e82d5c42fc2aec6d5.tar.gz
Nest: Fix password list parsing code
One of previous patches broke password list parsing code, fix that.
-rw-r--r--nest/config.Y15
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: