mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Fix v9/64-bit strcmp when string ends in multiple zero bytes.
[BZ #16885] * sysdeps/sparc/sparc64/strcmp.S: Fix end comparison handling when multiple zero bytes exist at the end of a string. Reported by Aurelien Jarno <aurelien@aurel32.net> * string/test-strcmp.c (check): Add explicit test for situations where there are multiple zero bytes after the first.
This commit is contained in:
@ -329,6 +329,34 @@ check (void)
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
check_result (impl, s1 + i1, s2 + i2, exp_result);
|
||||
}
|
||||
|
||||
/* Test cases where there are multiple zero bytes after the first. */
|
||||
|
||||
for (size_t i = 0; i < 16 + 1; i++)
|
||||
{
|
||||
s1[i] = 0x00;
|
||||
s2[i] = 0x00;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < 16; i++)
|
||||
{
|
||||
int exp_result;
|
||||
|
||||
for (int val = 0x01; val < 0x100; val++)
|
||||
{
|
||||
for (size_t j = 0; j < i; j++)
|
||||
{
|
||||
s1[j] = val;
|
||||
s2[j] = val;
|
||||
}
|
||||
|
||||
s2[i] = val;
|
||||
|
||||
exp_result = SIMPLE_STRCMP (s1, s2);
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
check_result (impl, s1, s2, exp_result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user