]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Nest: Fix password list parsing code
authorOndrej Zajicek (work) <santiago@crfreenet.org>
Sun, 6 Jun 2021 17:10:33 +0000 (19:10 +0200)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Sun, 6 Jun 2021 17:10:33 +0000 (19:10 +0200)
One of previous patches broke password list parsing code, fix that.

nest/config.Y

index 45d18679a1bf73292c2ba1d7cbe1fb0a75b60d9c..94f9b5dcd3657c27fc57dae17071f3e75dd12d0f 100644 (file)
@@ -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: