changeset 717:8babb41c0f94

cbor: test that buffer position after unpacking is correct Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Tue, 19 Mar 2019 14:27:27 -0400
parents 264c92a1d709
children c36d9d172b17
files tests/test_cbor_unpack.c
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_cbor_unpack.c	Mon Mar 18 17:50:48 2019 -0400
+++ b/tests/test_cbor_unpack.c	Tue Mar 19 14:27:27 2019 -0400
@@ -57,10 +57,16 @@
 									\
 		if (ret) {						\
 			/* failed, so there is no value to compare */	\
+			if (buffer_offset(&tmp) != 0)			\
+				fail("direct unpack changed buffer");	\
+									\
 			fprintf(stderr, "ok.\n");			\
 			break;						\
 		}							\
 									\
+		if (buffer_offset(&tmp) != buffer_size(&tmp))		\
+			fail("direct unpack didn't consume buffer");	\
+									\
 		wrap = alloc;						\
 		if (!sexpr_equal(wrap, val_getref(exp)))		\
 			fail("direct unpack not equal");		\
@@ -88,10 +94,16 @@
 									\
 		if (IS_ERR(ret)) {					\
 			/* failed, so there is no value to compare */	\
+			if (buffer_offset(&tmp) != 0)			\
+				fail("indirect unpack changed buffer");	\
+									\
 			fprintf(stderr, "ok.\n");			\
 			break;						\
 		}							\
 									\
+		if (buffer_offset(&tmp) != buffer_size(&tmp))		\
+			fail("indirect unpack didn't consume buffer");	\
+									\
 		if (sexpr_is_null(exp)) {				\
 			if ((ret->type != VT_ARRAY) ||			\
 			    (ret->array.nelem != 0))			\