mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Add a test for BZ #15674
This commit is contained in:
@ -1,6 +1,9 @@
|
|||||||
2013-06-26 Liubov Dmitrieva <liubov.dmitrieva@intel.com>
|
2013-06-26 Liubov Dmitrieva <liubov.dmitrieva@intel.com>
|
||||||
|
|
||||||
[BZ #15674]
|
[BZ #15674]
|
||||||
|
* string/test-memcmp.c (check2): New.
|
||||||
|
(main): Call check2.
|
||||||
|
|
||||||
* sysdeps/x86_64/multiarch/memcmp-ssse3.S: Fix buffers overrun.
|
* sysdeps/x86_64/multiarch/memcmp-ssse3.S: Fix buffers overrun.
|
||||||
|
|
||||||
2013-06-26 Maciej W. Rozycki <macro@codesourcery.com>
|
2013-06-26 Maciej W. Rozycki <macro@codesourcery.com>
|
||||||
|
@ -448,6 +448,29 @@ check1 (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This test checks that memcmp doesn't overrun buffers. */
|
||||||
|
static void
|
||||||
|
check2 (void)
|
||||||
|
{
|
||||||
|
size_t max_length = page_size / sizeof (CHAR);
|
||||||
|
|
||||||
|
/* Initialize buf2 to the same values as buf1. The bug requires the
|
||||||
|
last compared byte to be different. */
|
||||||
|
memcpy (buf2, buf1, page_size);
|
||||||
|
((char *) buf2)[page_size - 1] ^= 0x11;
|
||||||
|
|
||||||
|
for (size_t length = 1; length < max_length; length++)
|
||||||
|
{
|
||||||
|
CHAR *s1 = (CHAR *) buf1 + max_length - length;
|
||||||
|
CHAR *s2 = (CHAR *) buf2 + max_length - length;
|
||||||
|
|
||||||
|
const int exp_result = SIMPLE_MEMCMP (s1, s2, length);
|
||||||
|
|
||||||
|
FOR_EACH_IMPL (impl, 0)
|
||||||
|
check_result (impl, s1, s2, length, exp_result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
test_main (void)
|
test_main (void)
|
||||||
{
|
{
|
||||||
@ -456,6 +479,7 @@ test_main (void)
|
|||||||
test_init ();
|
test_init ();
|
||||||
|
|
||||||
check1 ();
|
check1 ();
|
||||||
|
check2 ();
|
||||||
|
|
||||||
printf ("%23s", "");
|
printf ("%23s", "");
|
||||||
FOR_EACH_IMPL (impl, 0)
|
FOR_EACH_IMPL (impl, 0)
|
||||||
|
Reference in New Issue
Block a user