From 036a623a4022e12c3a5bfa6e59bcc08b6d564c87 Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Sat, 21 Jan 2006 17:33:02 +0000 Subject: [PATCH] (xunsymbol): Ensure the table is a symbol table before searching it. --- src/lib/common/xundump.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/common/xundump.c b/src/lib/common/xundump.c index b94128a1..c530f482 100644 --- a/src/lib/common/xundump.c +++ b/src/lib/common/xundump.c @@ -258,8 +258,12 @@ xunsymbol(struct castr *ca, struct value *vp, int n) int value; char *token; + if (ca->ca_table == EF_BAD || ef_cadef(ca->ca_table) != symbol_ca) + return gripe("%s doesn't take a symbol or symbol set in field %d", + ca->ca_name, n); + if (vp->v_type == VAL_SYMBOL_SET) { - if (!(ca->ca_flags & NSC_BITS) || ca->ca_table == EF_BAD) + if (!(ca->ca_flags & NSC_BITS)) return gripe("%s doesn't take a symbol set in field %d", ca->ca_name, n); value = 0; @@ -270,7 +274,7 @@ xunsymbol(struct castr *ca, struct value *vp, int n) value |= symtab[i].value; } } else if (vp->v_type == VAL_SYMBOL) { - if ((ca->ca_flags & NSC_BITS) || ca->ca_table == EF_BAD) + if (ca->ca_flags & NSC_BITS) return gripe("%s doesn't take a symbol in field %d", ca->ca_name, n); i = xunsymbol1(buf, symtab, ca, n);