[master] 59b85155f Polish diagnostic, and complete coverage testing of vcc_vmod.c

Poul-Henning Kamp phk at FreeBSD.org
Mon Jul 4 10:11:08 UTC 2022


commit 59b85155f311945a6c0e9617a2b99a5e29cf6d09
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon Jul 4 10:10:39 2022 +0000

    Polish diagnostic, and complete coverage testing of vcc_vmod.c

diff --git a/bin/varnishtest/tests/m00003.vtc b/bin/varnishtest/tests/m00003.vtc
index e03d34ef4..41155b926 100644
--- a/bin/varnishtest/tests/m00003.vtc
+++ b/bin/varnishtest/tests/m00003.vtc
@@ -59,4 +59,103 @@ varnish v1 -errvcl {Not string[2]} { import wrong; }
 filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02" "[[\"$VBLA\"]]" "\x03"
 varnish v1 -errvcl {Not $VMOD[3]} { import wrong; }
 
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+    [
+	[
+	    "$VMOD",
+	    "1.0",
+	    "wrong",
+	    "Vmod_vmod_wrong_Func",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    0,
+	    0
+	]
+    ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Incompatible VMOD wrong} { import wrong; }
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+    [
+	[
+	    "$VMOD",
+	    "1.0",
+	    "wrong",
+	    "Vmod_vmod_wrong_Func",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    1,
+	    0
+	]
+    ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {VMOD wants ABI version 1.0} { import wrong; }
+
+#############################################################
+# NB: in the tests below "15" should track VRT_MAJOR_VERSION
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+    [
+	[
+	    "$VMOD",
+	    "1.0",
+	    "wrong",
+	    "Vmod_vmod_wrong_Func",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    15,
+	    0
+	], [
+	    "$FOOBAR"
+	]
+    ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Unknown metadata stanza.} { import wrong; }
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+    [
+	[
+	    "$VMOD",
+	    "1.0",
+	    "wrong",
+	    "Vmod_vmod_wrong_Func",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    15,
+	    0
+	]
+    ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Bad cproto stanza} { import wrong; }
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+    [
+	[
+	    "$VMOD",
+	    "1.0",
+	    "wrong",
+	    "Vmod_vmod_wrong_Func",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    "0000000000000000000000000000000000000000000000000000000000000000",
+	    15,
+	    0
+	], [
+	    "$CPROTO"
+	], [
+	    "$VMOD"
+	]
+    ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Bad vmod stanza} { import wrong; }
+
 shell "rm -f ${tmpdir}/libvmod_wrong.so"
diff --git a/lib/libvcc/vcc_vmod.c b/lib/libvcc/vcc_vmod.c
index 0fa316eef..755f44fa5 100644
--- a/lib/libvcc/vcc_vmod.c
+++ b/lib/libvcc/vcc_vmod.c
@@ -226,7 +226,7 @@ vcc_ParseJSON(const struct vcc *tl, const char *jsn, struct vmod_import *vim)
     if (!strcmp(vv3->value, "$" #UU)) {vim->n_##ll++; continue;}
 		STANZA_TBL
 #undef STANZA
-		return ("Unknown entry");
+		return ("Unknown metadata stanza.");
 	}
 	if (vim->n_cproto != 1)
 		return ("Bad cproto stanza(s)");


More information about the varnish-commit mailing list