]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib/util: Add test of mem_equal_const_time()
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Wed, 11 May 2022 02:06:22 +0000 (14:06 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 9 Jun 2022 22:49:29 +0000 (22:49 +0000)
Ensure that it gives the correct results for comparing two memory
regions.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/util/tests/util.c

index 03f62974c3f6e40a57a7213c3d6fd195d74d5a6f..0b69e215f820667a683b239e2e28ea7918850ebd 100644 (file)
@@ -426,6 +426,25 @@ done:
        return ret;
 }
 
+static bool test_mem_equal_const_time(struct torture_context *tctx)
+{
+       const char *test_string = "abcdabcd";
+
+       torture_assert(tctx, mem_equal_const_time("", "", 0),
+                      "zero-length comparison failed");
+
+       torture_assert(tctx, mem_equal_const_time(test_string, test_string, 8),
+                      "comparison with equal pointers failed");
+
+       torture_assert(tctx, mem_equal_const_time(test_string, test_string + 4, 4),
+                      "comparison with non-equal pointers failed");
+
+       torture_assert(tctx, !mem_equal_const_time("abcd", "efgh", 4),
+                      "comparison with different values failed");
+
+       return true;
+}
+
 static bool test_smb_strtoul_errno_check(struct torture_context *tctx)
 {
        const char *number = "123";
@@ -608,6 +627,9 @@ struct torture_suite *torture_local_util(TALLOC_CTX *mem_ctx)
        torture_suite_add_simple_test(suite,
                                      "directory_create_or_exist",
                                      test_directory_create_or_exist);
+       torture_suite_add_simple_test(suite,
+                                     "mem_equal_const_time",
+                                     test_mem_equal_const_time);
        torture_suite_add_simple_test(suite,
                                      "smb_strtoul(l) errno",
                                      test_smb_strtoul_errno_check);