From: Ondrej Zajicek (work) Date: Sun, 6 Jun 2021 17:10:33 +0000 (+0200) Subject: Nest: Fix password list parsing code X-Git-Tag: v2.0.9~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8eea396baf2bd73ea846a48e82d5c42fc2aec6d5;p=thirdparty%2Fbird.git Nest: Fix password list parsing code One of previous patches broke password list parsing code, fix that. --- diff --git a/nest/config.Y b/nest/config.Y index 45d18679a..94f9b5dcd 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: