check rollover, print summery

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12356 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2003-06-06 19:41:16 +00:00
parent dce2ccba07
commit e393de2f14
2 changed files with 90 additions and 8 deletions

View File

@@ -75,14 +75,20 @@ OM_uint32 pattern7[] = {
11, 12, 13 11, 12, 13
}; };
/* wrap around */
OM_uint32 pattern8[] = {
4294967293U, 4294967294U, 4294967295U, 0, 1, 2
};
static int static int
test_seq(int t, OM_uint32 flags, OM_uint32 *pattern, int pattern_len) test_seq(int t, OM_uint32 flags, OM_uint32 start_seq,
OM_uint32 *pattern, int pattern_len)
{ {
struct gss_msg_order *o; struct gss_msg_order *o;
OM_uint32 maj_stat, min_stat; OM_uint32 maj_stat, min_stat;
int i; int i;
maj_stat = gssapi_msg_order_create(&min_stat, &o, flags, 0, 20); maj_stat = gssapi_msg_order_create(&min_stat, &o, flags, start_seq, 20);
if (maj_stat) if (maj_stat)
err(1, "create: %d %d", maj_stat, min_stat); err(1, "create: %d %d", maj_stat, min_stat);
@@ -101,6 +107,7 @@ struct {
OM_uint32 *pattern; OM_uint32 *pattern;
int pattern_len; int pattern_len;
OM_uint32 error_code; OM_uint32 error_code;
OM_uint32 start_seq;
} pl[] = { } pl[] = {
{ {
GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG, GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG,
@@ -144,6 +151,13 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_GAP_TOKEN GSS_S_GAP_TOKEN
}, },
{
GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
},
{ {
0, 0,
pattern1, pattern1,
@@ -186,6 +200,14 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_COMPLETE GSS_S_COMPLETE
}, },
{
0,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
},
{ {
GSS_C_REPLAY_FLAG, GSS_C_REPLAY_FLAG,
pattern1, pattern1,
@@ -228,6 +250,13 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_COMPLETE GSS_S_COMPLETE
}, },
{
GSS_C_SEQUENCE_FLAG,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
},
{ {
GSS_C_SEQUENCE_FLAG, GSS_C_SEQUENCE_FLAG,
pattern1, pattern1,
@@ -270,6 +299,13 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_GAP_TOKEN GSS_S_GAP_TOKEN
}, },
{
GSS_C_REPLAY_FLAG,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
}
}; };
int int
@@ -281,14 +317,19 @@ main(int argc, char **argv)
for (i = 0; i < sizeof(pl)/sizeof(pl[0]); i++) { for (i = 0; i < sizeof(pl)/sizeof(pl[0]); i++) {
maj_stat = test_seq(i, maj_stat = test_seq(i,
pl[i].flags, pl[i].flags,
pl[i].start_seq,
pl[i].pattern, pl[i].pattern,
pl[i].pattern_len); pl[i].pattern_len);
if (maj_stat != pl[i].error_code) { if (maj_stat != pl[i].error_code) {
printf("test pattern %d failed with %d (should have been %d)\n", printf("test pattern %d failed with %d (should have been %d)\n",
i, maj_stat, pl[i].error_code); i, maj_stat, pl[i].error_code);
failed = 1; failed++;
} else } else
printf("test %d success\n", i); printf("test %d success\n", i);
} }
return failed; if (failed)
printf("FAILED %d tests\n", failed);
else
printf("no failure\n");
return failed != 0;
} }

View File

@@ -75,14 +75,20 @@ OM_uint32 pattern7[] = {
11, 12, 13 11, 12, 13
}; };
/* wrap around */
OM_uint32 pattern8[] = {
4294967293U, 4294967294U, 4294967295U, 0, 1, 2
};
static int static int
test_seq(int t, OM_uint32 flags, OM_uint32 *pattern, int pattern_len) test_seq(int t, OM_uint32 flags, OM_uint32 start_seq,
OM_uint32 *pattern, int pattern_len)
{ {
struct gss_msg_order *o; struct gss_msg_order *o;
OM_uint32 maj_stat, min_stat; OM_uint32 maj_stat, min_stat;
int i; int i;
maj_stat = gssapi_msg_order_create(&min_stat, &o, flags, 0, 20); maj_stat = gssapi_msg_order_create(&min_stat, &o, flags, start_seq, 20);
if (maj_stat) if (maj_stat)
err(1, "create: %d %d", maj_stat, min_stat); err(1, "create: %d %d", maj_stat, min_stat);
@@ -101,6 +107,7 @@ struct {
OM_uint32 *pattern; OM_uint32 *pattern;
int pattern_len; int pattern_len;
OM_uint32 error_code; OM_uint32 error_code;
OM_uint32 start_seq;
} pl[] = { } pl[] = {
{ {
GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG, GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG,
@@ -144,6 +151,13 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_GAP_TOKEN GSS_S_GAP_TOKEN
}, },
{
GSS_C_REPLAY_FLAG|GSS_C_SEQUENCE_FLAG,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
},
{ {
0, 0,
pattern1, pattern1,
@@ -186,6 +200,14 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_COMPLETE GSS_S_COMPLETE
}, },
{
0,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
},
{ {
GSS_C_REPLAY_FLAG, GSS_C_REPLAY_FLAG,
pattern1, pattern1,
@@ -228,6 +250,13 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_COMPLETE GSS_S_COMPLETE
}, },
{
GSS_C_SEQUENCE_FLAG,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
},
{ {
GSS_C_SEQUENCE_FLAG, GSS_C_SEQUENCE_FLAG,
pattern1, pattern1,
@@ -270,6 +299,13 @@ struct {
sizeof(pattern7)/sizeof(pattern7[0]), sizeof(pattern7)/sizeof(pattern7[0]),
GSS_S_GAP_TOKEN GSS_S_GAP_TOKEN
}, },
{
GSS_C_REPLAY_FLAG,
pattern8,
sizeof(pattern8)/sizeof(pattern8[0]),
GSS_S_COMPLETE,
4294967293U
}
}; };
int int
@@ -281,14 +317,19 @@ main(int argc, char **argv)
for (i = 0; i < sizeof(pl)/sizeof(pl[0]); i++) { for (i = 0; i < sizeof(pl)/sizeof(pl[0]); i++) {
maj_stat = test_seq(i, maj_stat = test_seq(i,
pl[i].flags, pl[i].flags,
pl[i].start_seq,
pl[i].pattern, pl[i].pattern,
pl[i].pattern_len); pl[i].pattern_len);
if (maj_stat != pl[i].error_code) { if (maj_stat != pl[i].error_code) {
printf("test pattern %d failed with %d (should have been %d)\n", printf("test pattern %d failed with %d (should have been %d)\n",
i, maj_stat, pl[i].error_code); i, maj_stat, pl[i].error_code);
failed = 1; failed++;
} else } else
printf("test %d success\n", i); printf("test %d success\n", i);
} }
return failed; if (failed)
printf("FAILED %d tests\n", failed);
else
printf("no failure\n");
return failed != 0;
} }