[master] 4b70a66cf Proper error message when giving wrong types to backend/probe fields

Poul-Henning Kamp phk at FreeBSD.org
Wed Aug 21 07:07:06 UTC 2019


commit 4b70a66cf7d2d7efdf84b777dd2f3d45b3668957
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Aug 21 07:05:42 2019 +0000

    Proper error message when giving wrong types to backend/probe fields
    
    Fixes   #3046

diff --git a/lib/libvcc/vcc_utils.c b/lib/libvcc/vcc_utils.c
index 0e6642552..8a08e9af9 100644
--- a/lib/libvcc/vcc_utils.c
+++ b/lib/libvcc/vcc_utils.c
@@ -329,12 +329,15 @@ vcc_UintVal(struct vcc *tl)
 	unsigned d = 0;
 	const char *p;
 
-	Expect(tl, CNUM);
-	for (p = tl->t->b; p < tl->t->e; p++) {
-		d *= 10;
-		d += *p - '0';
+	if (tl->t->tok != CNUM) {
+		Expect(tl, CNUM);
+	} else {
+		for (p = tl->t->b; p < tl->t->e; p++) {
+			d *= 10;
+			d += *p - '0';
+		}
+		vcc_NextToken(tl);
 	}
-	vcc_NextToken(tl);
 	return (d);
 }
 
@@ -344,6 +347,10 @@ vcc_DoubleVal(struct vcc *tl)
 	const size_t l = tl->t->e - tl->t->b;
 	char buf[l + 1];
 
+	if (tl->t->tok != CNUM && tl->t->tok != FNUM) {
+		Expect(tl, CNUM);
+		return (0);
+	}
 	assert(tl->t->tok == CNUM || tl->t->tok == FNUM);
 	memcpy(buf, tl->t->b, l);
 	vcc_NextToken(tl);


More information about the varnish-commit mailing list