Test failure cases for der_get_tag.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21356 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -923,6 +923,38 @@ corner_generalized_time(void)
|
|||||||
return 0;
|
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
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@@ -955,6 +987,7 @@ main(int argc, char **argv)
|
|||||||
ret += check_trailing_nul();
|
ret += check_trailing_nul();
|
||||||
ret += test_misc_cmp();
|
ret += test_misc_cmp();
|
||||||
ret += corner_generalized_time();
|
ret += corner_generalized_time();
|
||||||
|
ret += corner_tag();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user