From 1ce6ffe667790ef19a56c309fe61526f9809074d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 27 Jun 2007 08:05:08 +0000 Subject: [PATCH] Test failure cases for der_get_tag. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21356 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/asn1/check-der.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/lib/asn1/check-der.c b/lib/asn1/check-der.c index 2599fbc1d..4bc5c1b50 100644 --- a/lib/asn1/check-der.c +++ b/lib/asn1/check-der.c @@ -923,6 +923,38 @@ corner_generalized_time(void) return 0; } +static int +corner_tag(void) +{ + struct { + int ok; + const char *ptr; + size_t len; + } tests[] = { + { 1, "\x00", 1 }, + { 0, "\xff", 1 }, + { 0, "\xff\xff\xff\xff\xff\xff\xff\xff", 8 } + }; + int i, ret; + Der_class cl; + Der_type ty; + unsigned int tag; + size_t size; + + for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++) { + ret = der_get_tag((const unsigned char*)tests[i].ptr, + tests[i].len, &cl, &ty, &tag, &size); + if (ret) { + if (tests[i].ok) + errx(1, "failed while shouldn't"); + } else { + if (!tests[i].ok) + errx(1, "passed while shouldn't"); + } + } + return 0; +} + int main(int argc, char **argv) { @@ -955,6 +987,7 @@ main(int argc, char **argv) ret += check_trailing_nul(); ret += test_misc_cmp(); ret += corner_generalized_time(); + ret += corner_tag(); return ret; }