glibc: fix i686 crashes via an upstream patch

Fixes #23177.
This commit is contained in:
Vladimír Čunát 2017-04-10 11:13:00 +02:00
parent a05959e191
commit c30b12b9a5
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
2 changed files with 25 additions and 0 deletions

@ -48,6 +48,8 @@ stdenv.mkDerivation ({
"/bin:/usr/bin", which is inappropriate on NixOS machines. This
patch extends the search path by "/run/current-system/sw/bin". */
./fix_path_attribute_in_getconf.patch
./fix-i686-memchr.patch
];
postPatch =

@ -0,0 +1,23 @@
Fix i686 memchr overflow calculation (BZ#21182)
https://sourceware.org/git/?p=glibc.git;a=commit;h=3abeeec5f46ff03
diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2.S b/sysdeps/i386/i686/multiarch/memchr-sse2.S
index 910679c..e41f324 100644
--- a/sysdeps/i386/i686/multiarch/memchr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/memchr-sse2.S
@@ -117,7 +117,6 @@ L(crosscache):
# ifndef USE_AS_RAWMEMCHR
jnz L(match_case2_prolog1)
- lea -16(%edx), %edx
/* Calculate the last acceptable address and check for possible
addition overflow by using satured math:
edx = ecx + edx
@@ -125,6 +124,7 @@ L(crosscache):
add %ecx, %edx
sbb %eax, %eax
or %eax, %edx
+ sub $16, %edx
jbe L(return_null)
lea 16(%edi), %edi
# else