mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
tilegx: remove implicit boolean conversion in strstr.
[BZ #17746] The __builtin_expect() truncated a uint64_t to a 32-bit long in ILP32 mode, discarding the high 32 bits, and potentially missing the NUL terminator that we were searching for with SIMD operations. Explicitly compare to zero to fix the problem.
This commit is contained in:
parent
929011700c
commit
0dacd7a3b9
@ -1,3 +1,9 @@
|
|||||||
|
2014-12-22 Chris Metcalf <cmetcalf@ezchip.com>
|
||||||
|
|
||||||
|
[BZ #17746]
|
||||||
|
* sysdeps/tile/tilegx/strstr.c (STRSTR2): Remove implicit boolean
|
||||||
|
conversion.
|
||||||
|
|
||||||
2014-12-22 Steve Ellcey <sellcey@imgtec.com>
|
2014-12-22 Steve Ellcey <sellcey@imgtec.com>
|
||||||
|
|
||||||
* sysdeps/unix/mips/sysdep.h (__mips_isa_rev): Set
|
* sysdeps/unix/mips/sysdep.h (__mips_isa_rev): Set
|
||||||
|
2
NEWS
2
NEWS
@ -15,7 +15,7 @@ Version 2.21
|
|||||||
17522, 17555, 17570, 17571, 17572, 17573, 17574, 17581, 17582, 17583,
|
17522, 17555, 17570, 17571, 17572, 17573, 17574, 17581, 17582, 17583,
|
||||||
17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630, 17633,
|
17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630, 17633,
|
||||||
17634, 17647, 17653, 17657, 17664, 17665, 17668, 17682, 17717, 17719,
|
17634, 17647, 17653, 17657, 17664, 17665, 17668, 17682, 17717, 17719,
|
||||||
17722, 17724, 17725, 17733, 17744, 17745.
|
17722, 17724, 17725, 17733, 17744, 17745, 17746.
|
||||||
|
|
||||||
* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
|
* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
|
||||||
under certain input conditions resulting in the execution of a shell for
|
under certain input conditions resulting in the execution of a shell for
|
||||||
|
@ -154,7 +154,7 @@ STRSTR2 (const char *haystack_start, const char *needle)
|
|||||||
/* Look for a terminating '\0'. */
|
/* Look for a terminating '\0'. */
|
||||||
zero_matches = __insn_v1cmpeqi (v, 0);
|
zero_matches = __insn_v1cmpeqi (v, 0);
|
||||||
uint64_t byte1_matches = __insn_v1cmpeq (v, byte1);
|
uint64_t byte1_matches = __insn_v1cmpeq (v, byte1);
|
||||||
if (__builtin_expect (zero_matches, 0))
|
if (__builtin_expect (zero_matches != 0, 0))
|
||||||
{
|
{
|
||||||
/* This is the last vector. Don't worry about matches
|
/* This is the last vector. Don't worry about matches
|
||||||
crossing into the next vector. Shift the second byte
|
crossing into the next vector. Shift the second byte
|
||||||
|
Loading…
Reference in New Issue
Block a user