]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
string: Expand page cross test cases in test-strncmp.c
authorNoah Goldstein <goldstein.w.n@gmail.com>
Wed, 23 Mar 2022 21:57:40 +0000 (16:57 -0500)
committerNoah Goldstein <goldstein.w.n@gmail.com>
Fri, 25 Mar 2022 16:46:14 +0000 (11:46 -0500)
Test cases for when both `s1` and `s2` are near the end of a page
where previously missing.
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
string/test-strncmp.c

index 1a87f0e73e362160286d3b558aa70c9f7d057289..bba9e3d2dceffd74083d7817fb213f9e2c7491c4 100644 (file)
@@ -573,7 +573,7 @@ check_overflow (void)
 int
 test_main (void)
 {
-  size_t i, j;
+  size_t i, j, k;
   const size_t test_len = MIN(TEST_LEN, 3 * 4096);
   test_init ();
 
@@ -705,6 +705,31 @@ test_main (void)
           do_test_n (j, getpagesize () - j - 1, i, ULONG_MAX - i, 0, 127, 0);
           do_test_n (j, getpagesize () - j - 1, i, ULONG_MAX - i, 0, 127, 1);
           do_test_n (j, getpagesize () - j - 1, i, ULONG_MAX - i, 0, 127, -1);
+
+          for (k = 2; k <= 128; k += k)
+            {
+              do_test (getpagesize () - k, getpagesize () - j - 1, i - 1, i,
+                       127, 0);
+              do_test (getpagesize () - k - 1, getpagesize () - j - 1, i - 1,
+                       i, 127, 0);
+              do_test (getpagesize () - k, getpagesize () - j - 1, i + 1, i,
+                       127, 0);
+              do_test (getpagesize () - k - 1, getpagesize () - j - 1, i + 1,
+                       i, 127, 0);
+              do_test (getpagesize () - k, getpagesize () - j - 1, i, i, 127,
+                       0);
+              do_test (getpagesize () - k - 1, getpagesize () - j - 1, i, i,
+                       127, 0);
+              do_test (getpagesize () - k, getpagesize () - j - 1, i + 1, i,
+                       127, -1);
+              do_test (getpagesize () - k - 1, getpagesize () - j - 1, i + 1,
+                       i, 127, -1);
+              do_test (getpagesize () - k, getpagesize () - j - 1, i + 1, i,
+                       127, 1);
+              do_test (getpagesize () - k - 1, getpagesize () - j - 1, i + 1,
+                       i, 127, 1);
+            }
+
           if (i < 32)
             {
               i += 1;