@@ -28829,7 +28829,8 @@ static int test_wolfSSL_DtlsUpdateWindow(void)
2882928829static int DFB_TEST(WOLFSSL* ssl, word32 seq, word32 len, word32 f_offset,
2883028830 word32 f_len, word32 f_count, byte ready, word32 bytesReceived)
2883128831{
28832- DtlsMsg* cur;
28832+ EXPECT_DECLS;
28833+ DtlsMsg* cur = NULL;
2883328834 static byte msg[100];
2883428835 static byte msgInit = 0;
2883528836
@@ -28841,40 +28842,34 @@ static int DFB_TEST(WOLFSSL* ssl, word32 seq, word32 len, word32 f_offset,
2884128842 }
2884228843
2884328844 /* Sanitize test parameters */
28844- if (len > sizeof(msg))
28845- return -1;
28846- if (f_offset + f_len > sizeof(msg))
28847- return -1;
28845+ ExpectIntLE(len, sizeof(msg));
28846+ ExpectIntLE(f_offset + f_len, sizeof(msg));
2884828847
28849- DtlsMsgStore(ssl, 0, seq, msg + f_offset, len, certificate, f_offset, f_len, NULL);
28848+ if (EXPECT_SUCCESS())
28849+ DtlsMsgStore(ssl, 0, seq, msg + f_offset, len, certificate, f_offset, f_len, NULL);
2885028850
28851- if (ssl->dtls_rx_msg_list == NULL)
28852- return -100;
28851+ ExpectNotNull(ssl->dtls_rx_msg_list);
2885328852
28854- if ((cur = DtlsMsgFind(ssl->dtls_rx_msg_list, 0, seq)) == NULL)
28855- return -200;
28856- if (cur->fragBucketListCount != f_count)
28857- return -300;
28858- if (cur->ready != ready)
28859- return -400;
28860- if (cur->bytesReceived != bytesReceived)
28861- return -500;
28853+ ExpectNotNull(cur = DtlsMsgFind(ssl->dtls_rx_msg_list, 0, seq));
28854+ ExpectIntEQ(cur->fragBucketListCount, f_count);
28855+ ExpectIntEQ(cur->ready, ready);
28856+ ExpectIntEQ(cur->bytesReceived, bytesReceived);
2886228857 if (ready) {
28863- if (cur->fragBucketList != NULL)
28864- return -600;
28865- if (XMEMCMP(cur->fullMsg, msg, cur->sz) != 0)
28866- return -700;
28858+ ExpectNull(cur->fragBucketList);
28859+ ExpectBufEQ(cur->fullMsg, msg, cur->sz);
2886728860 }
2886828861 else {
2886928862 DtlsFragBucket* fb;
28870- if (cur->fragBucketList == NULL)
28871- return -800;
28872- for (fb = cur->fragBucketList; fb != NULL; fb = fb->m.m.next) {
28873- if (XMEMCMP(fb->buf, msg + fb->m.m.offset, fb->m.m.sz) != 0)
28874- return -900;
28875- }
28863+ ExpectNotNull(cur->fragBucketList);
28864+ for (fb = cur != NULL ? cur->fragBucketList : NULL;
28865+ EXPECT_SUCCESS() && fb != NULL; fb = fb->m.m.next)
28866+ ExpectBufEQ(fb->buf, msg + fb->m.m.offset, fb->m.m.sz);
2887628867 }
28877- return 0;
28868+ if (EXPECT_FAIL()) {
28869+ printf("Test parameters: seq %u len %u f_offset %u f_len %u f_count %u ready %u bytesReceived %u\n",
28870+ seq, len, f_offset, f_len, f_count, ready, bytesReceived);
28871+ }
28872+ return EXPECT_RESULT();
2887828873}
2887928874
2888028875static int test_wolfSSL_DTLS_fragment_buckets(void)
@@ -28884,68 +28879,114 @@ static int test_wolfSSL_DTLS_fragment_buckets(void)
2888428879
2888528880 XMEMSET(ssl, 0, sizeof(*ssl));
2888628881
28887- ExpectIntEQ (DFB_TEST(ssl, 0, 100, 0, 100, 0, 1, 100), 0 ); /* 0-100 */
28882+ EXPECT_TEST (DFB_TEST(ssl, 0, 100, 0, 100, 0, 1, 100)); /* 0-100 */
2888828883
28889- ExpectIntEQ (DFB_TEST(ssl, 1, 100, 0, 20, 1, 0, 20), 0 ); /* 0-20 */
28890- ExpectIntEQ (DFB_TEST(ssl, 1, 100, 20, 20, 1, 0, 40), 0 ); /* 20-40 */
28891- ExpectIntEQ (DFB_TEST(ssl, 1, 100, 40, 20, 1, 0, 60), 0 ); /* 40-60 */
28892- ExpectIntEQ (DFB_TEST(ssl, 1, 100, 60, 20, 1, 0, 80), 0 ); /* 60-80 */
28893- ExpectIntEQ (DFB_TEST(ssl, 1, 100, 80, 20, 0, 1, 100), 0 ); /* 80-100 */
28884+ EXPECT_TEST (DFB_TEST(ssl, 1, 100, 0, 20, 1, 0, 20)); /* 0-20 */
28885+ EXPECT_TEST (DFB_TEST(ssl, 1, 100, 20, 20, 1, 0, 40)); /* 20-40 */
28886+ EXPECT_TEST (DFB_TEST(ssl, 1, 100, 40, 20, 1, 0, 60)); /* 40-60 */
28887+ EXPECT_TEST (DFB_TEST(ssl, 1, 100, 60, 20, 1, 0, 80)); /* 60-80 */
28888+ EXPECT_TEST (DFB_TEST(ssl, 1, 100, 80, 20, 0, 1, 100)); /* 80-100 */
2889428889
2889528890 /* Test all permutations of 3 regions */
2889628891 /* 1 2 3 */
28897- ExpectIntEQ (DFB_TEST(ssl, 2, 100, 0, 30, 1, 0, 30), 0 ); /* 0-30 */
28898- ExpectIntEQ (DFB_TEST(ssl, 2, 100, 30, 30, 1, 0, 60), 0 ); /* 30-60 */
28899- ExpectIntEQ (DFB_TEST(ssl, 2, 100, 60, 40, 0, 1, 100), 0 ); /* 60-100 */
28892+ EXPECT_TEST (DFB_TEST(ssl, 2, 100, 0, 30, 1, 0, 30)); /* 0-30 */
28893+ EXPECT_TEST (DFB_TEST(ssl, 2, 100, 30, 30, 1, 0, 60)); /* 30-60 */
28894+ EXPECT_TEST (DFB_TEST(ssl, 2, 100, 60, 40, 0, 1, 100)); /* 60-100 */
2890028895 /* 1 3 2 */
28901- ExpectIntEQ (DFB_TEST(ssl, 3, 100, 0, 30, 1, 0, 30), 0 ); /* 0-30 */
28902- ExpectIntEQ (DFB_TEST(ssl, 3, 100, 60, 40, 2, 0, 70), 0 ); /* 60-100 */
28903- ExpectIntEQ (DFB_TEST(ssl, 3, 100, 30, 30, 0, 1, 100), 0 ); /* 30-60 */
28896+ EXPECT_TEST (DFB_TEST(ssl, 3, 100, 0, 30, 1, 0, 30)); /* 0-30 */
28897+ EXPECT_TEST (DFB_TEST(ssl, 3, 100, 60, 40, 2, 0, 70)); /* 60-100 */
28898+ EXPECT_TEST (DFB_TEST(ssl, 3, 100, 30, 30, 0, 1, 100)); /* 30-60 */
2890428899 /* 2 1 3 */
28905- ExpectIntEQ (DFB_TEST(ssl, 4, 100, 30, 30, 1, 0, 30), 0 ); /* 30-60 */
28906- ExpectIntEQ (DFB_TEST(ssl, 4, 100, 0, 30, 1, 0, 60), 0 ); /* 0-30 */
28907- ExpectIntEQ (DFB_TEST(ssl, 4, 100, 60, 40, 0, 1, 100), 0 ); /* 60-100 */
28900+ EXPECT_TEST (DFB_TEST(ssl, 4, 100, 30, 30, 1, 0, 30)); /* 30-60 */
28901+ EXPECT_TEST (DFB_TEST(ssl, 4, 100, 0, 30, 1, 0, 60)); /* 0-30 */
28902+ EXPECT_TEST (DFB_TEST(ssl, 4, 100, 60, 40, 0, 1, 100)); /* 60-100 */
2890828903 /* 2 3 1 */
28909- ExpectIntEQ (DFB_TEST(ssl, 5, 100, 30, 30, 1, 0, 30), 0 ); /* 30-60 */
28910- ExpectIntEQ (DFB_TEST(ssl, 5, 100, 60, 40, 1, 0, 70), 0 ); /* 60-100 */
28911- ExpectIntEQ (DFB_TEST(ssl, 5, 100, 0, 30, 0, 1, 100), 0 ); /* 0-30 */
28904+ EXPECT_TEST (DFB_TEST(ssl, 5, 100, 30, 30, 1, 0, 30)); /* 30-60 */
28905+ EXPECT_TEST (DFB_TEST(ssl, 5, 100, 60, 40, 1, 0, 70)); /* 60-100 */
28906+ EXPECT_TEST (DFB_TEST(ssl, 5, 100, 0, 30, 0, 1, 100)); /* 0-30 */
2891228907 /* 3 1 2 */
28913- ExpectIntEQ (DFB_TEST(ssl, 6, 100, 60, 40, 1, 0, 40), 0 ); /* 60-100 */
28914- ExpectIntEQ (DFB_TEST(ssl, 6, 100, 0, 30, 2, 0, 70), 0 ); /* 0-30 */
28915- ExpectIntEQ (DFB_TEST(ssl, 6, 100, 30, 30, 0, 1, 100), 0 ); /* 30-60 */
28908+ EXPECT_TEST (DFB_TEST(ssl, 6, 100, 60, 40, 1, 0, 40)); /* 60-100 */
28909+ EXPECT_TEST (DFB_TEST(ssl, 6, 100, 0, 30, 2, 0, 70)); /* 0-30 */
28910+ EXPECT_TEST (DFB_TEST(ssl, 6, 100, 30, 30, 0, 1, 100)); /* 30-60 */
2891628911 /* 3 2 1 */
28917- ExpectIntEQ (DFB_TEST(ssl, 7, 100, 60, 40, 1, 0, 40), 0 ); /* 60-100 */
28918- ExpectIntEQ (DFB_TEST(ssl, 7, 100, 30, 30, 1, 0, 70), 0 ); /* 30-60 */
28919- ExpectIntEQ (DFB_TEST(ssl, 7, 100, 0, 30, 0, 1, 100), 0 ); /* 0-30 */
28912+ EXPECT_TEST (DFB_TEST(ssl, 7, 100, 60, 40, 1, 0, 40)); /* 60-100 */
28913+ EXPECT_TEST (DFB_TEST(ssl, 7, 100, 30, 30, 1, 0, 70)); /* 30-60 */
28914+ EXPECT_TEST (DFB_TEST(ssl, 7, 100, 0, 30, 0, 1, 100)); /* 0-30 */
2892028915
2892128916 /* Test overlapping regions */
28922- ExpectIntEQ (DFB_TEST(ssl, 8, 100, 0, 30, 1, 0, 30), 0 ); /* 0-30 */
28923- ExpectIntEQ (DFB_TEST(ssl, 8, 100, 20, 10, 1, 0, 30), 0 ); /* 20-30 */
28924- ExpectIntEQ (DFB_TEST(ssl, 8, 100, 70, 10, 2, 0, 40), 0 ); /* 70-80 */
28925- ExpectIntEQ (DFB_TEST(ssl, 8, 100, 20, 30, 2, 0, 60), 0 ); /* 20-50 */
28926- ExpectIntEQ (DFB_TEST(ssl, 8, 100, 40, 60, 0, 1, 100), 0 ); /* 40-100 */
28917+ EXPECT_TEST (DFB_TEST(ssl, 8, 100, 0, 30, 1, 0, 30)); /* 0-30 */
28918+ EXPECT_TEST (DFB_TEST(ssl, 8, 100, 20, 10, 1, 0, 30)); /* 20-30 */
28919+ EXPECT_TEST (DFB_TEST(ssl, 8, 100, 70, 10, 2, 0, 40)); /* 70-80 */
28920+ EXPECT_TEST (DFB_TEST(ssl, 8, 100, 20, 30, 2, 0, 60)); /* 20-50 */
28921+ EXPECT_TEST (DFB_TEST(ssl, 8, 100, 40, 60, 0, 1, 100)); /* 40-100 */
2892728922
2892828923 /* Test overlapping multiple regions */
28929- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */
28930- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 30, 5, 2, 0, 25), 0); /* 30-35 */
28931- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 40, 5, 3, 0, 30), 0); /* 40-45 */
28932- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 50, 5, 4, 0, 35), 0); /* 50-55 */
28933- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 60, 5, 5, 0, 40), 0); /* 60-65 */
28934- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 70, 5, 6, 0, 45), 0); /* 70-75 */
28935- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 30, 25, 4, 0, 55), 0); /* 30-55 */
28936- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 55, 15, 2, 0, 65), 0); /* 55-70 */
28937- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 75, 25, 2, 0, 90), 0); /* 75-100 */
28938- ExpectIntEQ(DFB_TEST(ssl, 9, 100, 10, 25, 0, 1, 100), 0); /* 10-35 */
28939-
28940- ExpectIntEQ(DFB_TEST(ssl, 10, 100, 0, 20, 1, 0, 20), 0); /* 0-20 */
28941- ExpectIntEQ(DFB_TEST(ssl, 10, 100, 30, 20, 2, 0, 40), 0); /* 30-50 */
28942- ExpectIntEQ(DFB_TEST(ssl, 10, 100, 0, 40, 1, 0, 50), 0); /* 0-40 */
28943- ExpectIntEQ(DFB_TEST(ssl, 10, 100, 50, 50, 0, 1, 100), 0); /* 10-35 */
28924+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 0, 20, 1, 0, 20)); /* 0-20 */
28925+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 30, 5, 2, 0, 25)); /* 30-35 */
28926+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 40, 5, 3, 0, 30)); /* 40-45 */
28927+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 50, 5, 4, 0, 35)); /* 50-55 */
28928+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 60, 5, 5, 0, 40)); /* 60-65 */
28929+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 70, 5, 6, 0, 45)); /* 70-75 */
28930+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 30, 25, 4, 0, 55)); /* 30-55 */
28931+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 55, 15, 2, 0, 65)); /* 55-70 */
28932+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 75, 25, 2, 0, 90)); /* 75-100 */
28933+ EXPECT_TEST(DFB_TEST(ssl, 9, 100, 10, 25, 0, 1, 100)); /* 10-35 */
28934+
28935+ EXPECT_TEST(DFB_TEST(ssl,10, 100, 0, 20, 1, 0, 20)); /* 0-20 */
28936+ EXPECT_TEST(DFB_TEST(ssl,10, 100, 30, 20, 2, 0, 40)); /* 30-50 */
28937+ EXPECT_TEST(DFB_TEST(ssl,10, 100, 0, 40, 1, 0, 50)); /* 0-40 */
28938+ EXPECT_TEST(DFB_TEST(ssl,10, 100, 50, 50, 0, 1, 100)); /* 50-100 */
28939+
28940+ /* Test region between other regions */
28941+ EXPECT_TEST(DFB_TEST(ssl,11, 100, 0, 20, 1, 0, 20)); /* 0-20 */
28942+ EXPECT_TEST(DFB_TEST(ssl,11, 100, 80, 20, 2, 0, 40)); /* 80-100 */
28943+ EXPECT_TEST(DFB_TEST(ssl,11, 100, 40, 20, 3, 0, 60)); /* 40-60 */
28944+ EXPECT_TEST(DFB_TEST(ssl,11, 100, 20, 20, 2, 0, 80)); /* 20-40 */
28945+ EXPECT_TEST(DFB_TEST(ssl,11, 100, 60, 20, 0, 1, 100)); /* 60-80 */
28946+
28947+ /* Test gap before first bucket (prev==NULL in gap-before branch) */
28948+ EXPECT_TEST(DFB_TEST(ssl,12, 100, 50, 20, 1, 0, 20)); /* 50-70 */
28949+ EXPECT_TEST(DFB_TEST(ssl,12, 100, 0, 20, 2, 0, 40)); /* 0-20 gap before first */
28950+ EXPECT_TEST(DFB_TEST(ssl,12, 100, 20, 30, 1, 0, 70)); /* 20-50 bridges gap */
28951+ EXPECT_TEST(DFB_TEST(ssl,12, 100, 70, 30, 0, 1, 100)); /* 70-100 */
28952+
28953+ /* Test fragment after message is already complete (ready early return) */
28954+ EXPECT_TEST(DFB_TEST(ssl,13, 100, 0,100, 0, 1, 100)); /* 0-100 complete */
28955+ EXPECT_TEST(DFB_TEST(ssl,13, 100, 0, 50, 0, 1, 100)); /* 0-50 dup on ready */
28956+
28957+ /* Test combine where next bucket is larger than cur (chosenBucket=&next) */
28958+ EXPECT_TEST(DFB_TEST(ssl,14, 100, 0, 10, 1, 0, 10)); /* 0-10 */
28959+ EXPECT_TEST(DFB_TEST(ssl,14, 100, 30, 50, 2, 0, 60)); /* 30-80 */
28960+ EXPECT_TEST(DFB_TEST(ssl,14, 100, 5, 30, 1, 0, 80)); /* 5-35 next>cur */
28961+ EXPECT_TEST(DFB_TEST(ssl,14, 100, 80, 20, 0, 1, 100)); /* 80-100 */
28962+
28963+ /* Test super fragment covering all existing buckets */
28964+ EXPECT_TEST(DFB_TEST(ssl,15, 100, 10, 10, 1, 0, 10)); /* 10-20 */
28965+ EXPECT_TEST(DFB_TEST(ssl,15, 100, 30, 10, 2, 0, 20)); /* 30-40 */
28966+ EXPECT_TEST(DFB_TEST(ssl,15, 100, 60, 10, 3, 0, 30)); /* 60-70 */
28967+ EXPECT_TEST(DFB_TEST(ssl,15, 100, 0,100, 0, 1, 100)); /* 0-100 super frag */
28968+
28969+ /* Test exact duplicate fragment */
28970+ EXPECT_TEST(DFB_TEST(ssl,16, 100, 20, 40, 1, 0, 40)); /* 20-60 */
28971+ EXPECT_TEST(DFB_TEST(ssl,16, 100, 20, 40, 1, 0, 40)); /* 20-60 exact dup */
28972+ EXPECT_TEST(DFB_TEST(ssl,16, 100, 0, 20, 1, 0, 60)); /* 0-20 */
28973+ EXPECT_TEST(DFB_TEST(ssl,16, 100, 60, 40, 0, 1, 100)); /* 60-100 */
28974+
28975+ /* Test combine bridging two buckets (combineNext, cur->data) */
28976+ EXPECT_TEST(DFB_TEST(ssl,17, 100, 0, 30, 1, 0, 30)); /* 0-30 */
28977+ EXPECT_TEST(DFB_TEST(ssl,17, 100, 60, 20, 2, 0, 50)); /* 60-80 */
28978+ EXPECT_TEST(DFB_TEST(ssl,17, 100, 20, 45, 1, 0, 80)); /* 20-65 bridge */
28979+ EXPECT_TEST(DFB_TEST(ssl,17, 100, 80, 20, 0, 1, 100)); /* 80-100 */
28980+
28981+ /* Test progressive left-extension with partial overlaps */
28982+ EXPECT_TEST(DFB_TEST(ssl,18, 100, 70, 30, 1, 0, 30)); /* 70-100 */
28983+ EXPECT_TEST(DFB_TEST(ssl,18, 100, 50, 30, 1, 0, 50)); /* 50-80 extend left */
28984+ EXPECT_TEST(DFB_TEST(ssl,18, 100, 30, 30, 1, 0, 70)); /* 30-60 extend left */
28985+ EXPECT_TEST(DFB_TEST(ssl,18, 100, 0, 40, 0, 1, 100)); /* 0-40 complete left */
2894428986
2894528987 DtlsMsgListDelete(ssl->dtls_rx_msg_list, ssl->heap);
2894628988 ssl->dtls_rx_msg_list = NULL;
2894728989 ssl->dtls_rx_msg_list_sz = 0;
28948-
2894928990 return EXPECT_RESULT();
2895028991}
2895128992
0 commit comments