diff options
author | Quentin Carbonneaux <quentin@c9x.me> | 2021-07-30 00:11:27 +0200 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2021-07-30 00:14:53 +0200 |
commit | 3da3815a674c922c520e013b30eb96c7491a5e85 (patch) | |
tree | d82dde5bf3269d0aad173f7d8e60e08d5519fb8f /util.c | |
parent | 98cd2e817616fff14622b8e514fc88b378a100ef (diff) | |
download | roux-3da3815a674c922c520e013b30eb96c7491a5e85.tar.gz |
err when an address contains a sum $a+$b (afl)
Reported by Alessandro Mantovani. These addresses are likely bogus, but they triggered an unwarranted assertion failure. We now raise a civilized error.
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/util.c b/util.c index 0123e27..a28176d 100644 --- a/util.c +++ b/util.c @@ -362,19 +362,21 @@ getcon(int64_t val, Fn *fn) return CON(c); } -void +int addcon(Con *c0, Con *c1) { if (c0->type == CUndef) *c0 = *c1; else { if (c1->type == CAddr) { - assert(c0->type != CAddr && "adding two addresses"); + if (c0->type == CAddr) + return 0; c0->type = CAddr; c0->label = c1->label; } c0->bits.i += c1->bits.i; } + return 1; } void |