]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
quic: add mfail tests for QUIC SRTM
authorJakub Zelenka <jakub.zelenka@openssl.foundation>
Thu, 18 Jun 2026 17:26:47 +0000 (19:26 +0200)
committerNorbert Pocs <norbertp@openssl.org>
Thu, 25 Jun 2026 07:06:27 +0000 (09:06 +0200)
This cover various function for SRTM.

Assisted-by: Claude:claude-opus-4-8
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Thu Jun 25 07:06:31 2026
(Merged from https://github.com/openssl/openssl/pull/31593)

test/quic_srtm_test.c

index cbdf8476324f8aa6da751e3cd10b52a43400177c..db291989183b2d0af5587189fb5014aa4b89118e 100644 (file)
@@ -72,8 +72,58 @@ err:
     return testresult;
 }
 
+static int test_srtm_new_mfail(void)
+{
+    QUIC_SRTM *srtm;
+
+    MFAIL_start();
+    srtm = ossl_quic_srtm_new(NULL, NULL);
+    MFAIL_end();
+
+    ossl_quic_srtm_free(srtm);
+    return srtm != NULL;
+}
+
+static int test_srtm_ops_mfail(void)
+{
+    int testresult = 0;
+    QUIC_SRTM *srtm;
+    void *opaque = NULL;
+    uint64_t seq_num = 0;
+
+    if (!TEST_ptr(srtm = ossl_quic_srtm_new(NULL, NULL)))
+        goto err;
+
+    MFAIL_start();
+
+    if (!ossl_quic_srtm_add(srtm, ptrs + 0, 0, &token_1)
+        || !ossl_quic_srtm_add(srtm, ptrs + 0, 1, &token_1)
+        || !ossl_quic_srtm_add(srtm, ptrs + 0, 2, &token_1)
+        || !ossl_quic_srtm_add(srtm, ptrs + 1, 0, &token_1)
+        || !ossl_quic_srtm_add(srtm, ptrs + 2, 0, &token_2)
+        || !ossl_quic_srtm_add(srtm, ptrs + 3, 3, &token_2)
+        || !ossl_quic_srtm_remove(srtm, ptrs + 3, 3)
+        || !ossl_quic_srtm_lookup(srtm, &token_1, 0, &opaque, &seq_num)
+        || !ossl_quic_srtm_cull(srtm, ptrs + 0)
+        || !ossl_quic_srtm_lookup(srtm, &token_2, 0, &opaque, &seq_num)
+        || !ossl_quic_srtm_remove(srtm, ptrs + 2, 0))
+        goto err;
+
+    testresult = 1;
+err:
+    MFAIL_end();
+    ossl_quic_srtm_free(srtm);
+    return testresult;
+}
+
 int setup_tests(void)
 {
     ADD_TEST(test_srtm);
+#ifdef OPENSSL_NO_CACHED_FETCH
+    ADD_MFAIL_NO_CHECK_TEST(test_srtm_new_mfail);
+#else
+    ADD_MFAIL_TEST(test_srtm_new_mfail);
+#endif
+    ADD_MFAIL_TEST(test_srtm_ops_mfail);
     return 1;
 }