RIFO: Add a test for bounds checking
This tests exactly one frame before and one frame after what should be accepted to make sure those are rejected Signed-off-by: Sylvain Munaut <tnt@246tNt.com> Change-Id: I048e1b8c2b918f7ca4b4327b89bf04430a2838bc
This commit is contained in:
parent
712d234ca4
commit
2c0af2fa98
|
@ -125,6 +125,46 @@ static void too_old_frames(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void bound_check(void)
|
||||
{
|
||||
uint8_t frame[32];
|
||||
struct frame_rifo rifo;
|
||||
frame_rifo_init(&rifo);
|
||||
rifo.next_out_fn = init_next_out_fn;
|
||||
|
||||
printf("\nTEST: %s, starting at FN: %u\n", __func__, init_next_out_fn);
|
||||
|
||||
// Put 1 frame and get it
|
||||
memset(frame, 0xa5, sizeof(frame));
|
||||
frame_rifo_in(&rifo, frame, init_next_out_fn);
|
||||
frame_rifo_out(&rifo, frame);
|
||||
|
||||
// Put 11 frames at absolute frame numbers 791-801
|
||||
const uint8_t in[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
|
||||
for (int i = 0; i < sizeof(in); i++) {
|
||||
memset(frame, in[i], sizeof(frame));
|
||||
rifo_in(&rifo, frame, init_next_out_fn + in[i] + 791);
|
||||
}
|
||||
|
||||
// Add frame at start offset
|
||||
memset(frame, 0xa5, sizeof(frame));
|
||||
rifo_in(&rifo, frame, init_next_out_fn);
|
||||
|
||||
// Skip the first 790 frames
|
||||
for (int i = 0; i < 790; i++) {
|
||||
memset(frame, 0xff, sizeof(frame));
|
||||
// Note: frame_rifo_out instead of rifo_out
|
||||
// (just to ignore the output)
|
||||
frame_rifo_out(&rifo, frame);
|
||||
}
|
||||
|
||||
// Try to read the 10 real frames
|
||||
for (int i = 0; i < 10; i++) {
|
||||
memset(frame, 0xff, sizeof(frame));
|
||||
rifo_out(&rifo, frame);
|
||||
}
|
||||
}
|
||||
|
||||
void run_all_tests(void)
|
||||
{
|
||||
missing_frames(0);
|
||||
|
@ -132,6 +172,7 @@ void run_all_tests(void)
|
|||
reordered_in();
|
||||
correct_order();
|
||||
too_old_frames();
|
||||
bound_check();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
|
|
@ -99,6 +99,30 @@ RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
|
|||
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
|
||||
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
|
||||
|
||||
TEST: bound_check, starting at FN: 0
|
||||
RIFO_IN(0000000000000000000000000000000000000000000000000000000000000000, 791)=0
|
||||
RIFO_IN(0101010101010101010101010101010101010101010101010101010101010101, 792)=0
|
||||
RIFO_IN(0202020202020202020202020202020202020202020202020202020202020202, 793)=0
|
||||
RIFO_IN(0303030303030303030303030303030303030303030303030303030303030303, 794)=0
|
||||
RIFO_IN(0404040404040404040404040404040404040404040404040404040404040404, 795)=0
|
||||
RIFO_IN(0505050505050505050505050505050505050505050505050505050505050505, 796)=0
|
||||
RIFO_IN(0606060606060606060606060606060606060606060606060606060606060606, 797)=0
|
||||
RIFO_IN(0707070707070707070707070707070707070707070707070707070707070707, 798)=0
|
||||
RIFO_IN(0808080808080808080808080808080808080808080808080808080808080808, 799)=0
|
||||
RIFO_IN(0909090909090909090909090909090909090909090909090909090909090909, 800)=0
|
||||
RIFO_IN(0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a, 801)=-34
|
||||
RIFO_IN(a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5, 0)=-34
|
||||
RIFO_OUT(0000000000000000000000000000000000000000000000000000000000000000)=0
|
||||
RIFO_OUT(0101010101010101010101010101010101010101010101010101010101010101)=0
|
||||
RIFO_OUT(0202020202020202020202020202020202020202020202020202020202020202)=0
|
||||
RIFO_OUT(0303030303030303030303030303030303030303030303030303030303030303)=0
|
||||
RIFO_OUT(0404040404040404040404040404040404040404040404040404040404040404)=0
|
||||
RIFO_OUT(0505050505050505050505050505050505050505050505050505050505050505)=0
|
||||
RIFO_OUT(0606060606060606060606060606060606060606060606060606060606060606)=0
|
||||
RIFO_OUT(0707070707070707070707070707070707070707070707070707070707070707)=0
|
||||
RIFO_OUT(0808080808080808080808080808080808080808080808080808080808080808)=0
|
||||
RIFO_OUT(0909090909090909090909090909090909090909090909090909090909090909)=0
|
||||
|
||||
TEST: missing_frames, starting at FN: 4294967290
|
||||
RIFO_IN(0000000000000000000000000000000000000000000000000000000000000000, 4294967290)=0
|
||||
RIFO_IN(0202020202020202020202020202020202020202020202020202020202020202, 4294967292)=0
|
||||
|
@ -198,3 +222,27 @@ RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
|
|||
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
|
||||
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
|
||||
RIFO_OUT(ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)=-1
|
||||
|
||||
TEST: bound_check, starting at FN: 4294967290
|
||||
RIFO_IN(0000000000000000000000000000000000000000000000000000000000000000, 785)=0
|
||||
RIFO_IN(0101010101010101010101010101010101010101010101010101010101010101, 786)=0
|
||||
RIFO_IN(0202020202020202020202020202020202020202020202020202020202020202, 787)=0
|
||||
RIFO_IN(0303030303030303030303030303030303030303030303030303030303030303, 788)=0
|
||||
RIFO_IN(0404040404040404040404040404040404040404040404040404040404040404, 789)=0
|
||||
RIFO_IN(0505050505050505050505050505050505050505050505050505050505050505, 790)=0
|
||||
RIFO_IN(0606060606060606060606060606060606060606060606060606060606060606, 791)=0
|
||||
RIFO_IN(0707070707070707070707070707070707070707070707070707070707070707, 792)=0
|
||||
RIFO_IN(0808080808080808080808080808080808080808080808080808080808080808, 793)=0
|
||||
RIFO_IN(0909090909090909090909090909090909090909090909090909090909090909, 794)=0
|
||||
RIFO_IN(0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a, 795)=-34
|
||||
RIFO_IN(a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5, 4294967290)=-34
|
||||
RIFO_OUT(0000000000000000000000000000000000000000000000000000000000000000)=0
|
||||
RIFO_OUT(0101010101010101010101010101010101010101010101010101010101010101)=0
|
||||
RIFO_OUT(0202020202020202020202020202020202020202020202020202020202020202)=0
|
||||
RIFO_OUT(0303030303030303030303030303030303030303030303030303030303030303)=0
|
||||
RIFO_OUT(0404040404040404040404040404040404040404040404040404040404040404)=0
|
||||
RIFO_OUT(0505050505050505050505050505050505050505050505050505050505050505)=0
|
||||
RIFO_OUT(0606060606060606060606060606060606060606060606060606060606060606)=0
|
||||
RIFO_OUT(0707070707070707070707070707070707070707070707070707070707070707)=0
|
||||
RIFO_OUT(0808080808080808080808080808080808080808080808080808080808080808)=0
|
||||
RIFO_OUT(0909090909090909090909090909090909090909090909090909090909090909)=0
|
||||
|
|
Loading…
Reference in New Issue