mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Filter: Fixed segfault when a case option had an empty block
Thanks to Kobayashi_Bairuo <noc@tohunet.com> for reporting.
This commit is contained in:
parent
ac7341a181
commit
1499a335f6
@ -200,7 +200,7 @@ FID_INTERPRET_BODY()')
|
||||
# Executing another filter line. This replaces the recursion
|
||||
# that was needed in the former implementation.
|
||||
m4_define(LINEX, `FID_INTERPRET_EXEC()LINEX_($1)FID_INTERPRET_NEW()return $1 FID_INTERPRET_BODY()')
|
||||
m4_define(LINEX_, `do {
|
||||
m4_define(LINEX_, `do if ($1) {
|
||||
fstk->estk[fstk->ecnt].pos = 0;
|
||||
fstk->estk[fstk->ecnt].line = $1;
|
||||
fstk->estk[fstk->ecnt].ventry = fstk->vcnt;
|
||||
@ -227,9 +227,7 @@ if (!f_same(f1->fl$1, f2->fl$1)) return 0;
|
||||
FID_ITERATE_BODY()m4_dnl
|
||||
if (whati->fl$1) BUFFER_PUSH(fit->lines) = whati->fl$1;
|
||||
FID_INTERPRET_EXEC()m4_dnl
|
||||
do { if (whati->fl$1) {
|
||||
LINEX_(whati->fl$1);
|
||||
} } while(0)
|
||||
LINEX_(whati->fl$1)
|
||||
FID_INTERPRET_NEW()m4_dnl
|
||||
return whati->f$1
|
||||
FID_INTERPRET_BODY()')
|
||||
|
@ -1327,7 +1327,6 @@
|
||||
FID_HIC(,break,return NULL);
|
||||
}
|
||||
}
|
||||
/* It is actually possible to have t->data NULL */
|
||||
|
||||
LINEX(t->data);
|
||||
}
|
||||
|
@ -38,6 +38,18 @@ bt_test_same(onef, onef, 1);
|
||||
bt_test_same(onef, oneg, 1);
|
||||
bt_test_same(onef, twof, 0);
|
||||
|
||||
/*
|
||||
* Testing filter corner cases
|
||||
* ---------------------------
|
||||
*/
|
||||
|
||||
function t_nothing() {}
|
||||
bt_test_suite(t_nothing, "Testing nothing");
|
||||
|
||||
function t_metanothing() { t_nothing(); }
|
||||
bt_test_suite(t_metanothing, "Testing meta nothing");
|
||||
|
||||
|
||||
/*
|
||||
* Testing boolean expressions
|
||||
* ---------------------------
|
||||
@ -76,6 +88,14 @@ bt_test_suite(t_bool, "Testing boolean expressions");
|
||||
* ----------------
|
||||
*/
|
||||
|
||||
function aux_t_int(int t; int u)
|
||||
{
|
||||
case t {
|
||||
1: {}
|
||||
else: {}
|
||||
}
|
||||
}
|
||||
|
||||
define four = 4;
|
||||
define xyzzy = (120+10);
|
||||
define '1a-a1' = (xyzzy-100);
|
||||
@ -120,7 +140,10 @@ function t_int()
|
||||
else: bt_assert(false);
|
||||
}
|
||||
|
||||
|
||||
aux_t_int(1, 2);
|
||||
aux_t_int(1, 3);
|
||||
aux_t_int(2, 3);
|
||||
aux_t_int(2, 2);
|
||||
}
|
||||
|
||||
bt_test_suite(t_int, "Testing integers");
|
||||
|
Loading…
Reference in New Issue
Block a user