summary refs log tree commit diff
path: root/util.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin@c9x.me>2021-07-30 00:11:27 +0200
committerQuentin Carbonneaux <quentin@c9x.me>2021-07-30 00:14:53 +0200
commit3da3815a674c922c520e013b30eb96c7491a5e85 (patch)
treed82dde5bf3269d0aad173f7d8e60e08d5519fb8f /util.c
parent98cd2e817616fff14622b8e514fc88b378a100ef (diff)
downloadroux-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.c6
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