summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filter/filter.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/filter/filter.c b/filter/filter.c
index dd37008..f6d1b3f 100644
--- a/filter/filter.c
+++ b/filter/filter.c
@@ -396,20 +396,29 @@ interpret(struct f_inst *what)
if ((!e) && (f_flags & FF_FORCE_TMPATTR))
e = ea_find( (*f_rte)->attrs->eattrs, what->a2.i );
- if (!e) {
- res.type = T_VOID;
- break;
- }
switch (what->aux & EAF_TYPE_MASK) {
case EAF_TYPE_INT:
+ if (!e) {
+ res.type = T_VOID;
+ break;
+ }
res.type = T_INT;
res.val.i = e->u.data;
break;
case EAF_TYPE_AS_PATH:
+ if (!e) {
+ res.type = T_VOID;
+ break;
+ }
res.type = T_PATH;
res.val.ad = e->u.ptr;
break;
case EAF_TYPE_INT_SET:
+ if (!e) {
+ res.type = T_CLIST;
+ res.val.ad = adata_empty(f_pool);
+ break;
+ }
res.type = T_CLIST;
res.val.ad = e->u.ptr;
break;