1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Fix segmentation fault in strncasecmp for i686

2012-08-15  Liubov Dmitrieva  <liubov.dmitrieva@gmail.com>

	[BZ #14195]
        * sysdeps/i386/i686/multiarch/strcmp-sssse3.S: Fix
        segmentation fault for a case of two empty input strings.
	* string/test-strncasecmp.c (check1): Renamed to...
	(bz12205): ...this.
	(bz14195): Add new testcase for two empty input strings and N > 0.
	(test_main): Call new testcase, adapt for renamed function.
This commit is contained in:
Liubov Dmitrieva
2012-08-15 21:06:55 +02:00
committed by Andreas Jaeger
parent 9c55864e0d
commit b3f479a85a
4 changed files with 27 additions and 7 deletions

View File

@ -1,3 +1,13 @@
2012-08-15 Liubov Dmitrieva <liubov.dmitrieva@gmail.com>
[BZ #14195]
* sysdeps/i386/i686/multiarch/strcmp-sssse3.S: Fix
segmentation fault for a case of two empty input strings.
* string/test-strncasecmp.c (check1): Renamed to...
(bz12205): ...this.
(bz14195): Add new testcase for two empty input strings and N > 0.
(test_main): Call new testcase, adapt for renamed function.
2012-08-15 Andreas Jaeger <aj@suse.de> 2012-08-15 Andreas Jaeger <aj@suse.de>
[BZ #14090] [BZ #14090]

4
NEWS
View File

@ -10,8 +10,8 @@ Version 2.17
* The following bugs are resolved with this release: * The following bugs are resolved with this release:
6778, 6808, 13717, 13939, 14042, 14090, 14166, 14150, 14151, 14154, 14157, 6778, 6808, 13717, 13939, 14042, 14090, 14166, 14150, 14151, 14154, 14157,
14166, 14173, 14283, 14298, 14303, 14307, 14328, 14331, 14336, 14337, 14166, 14173, 14195, 14283, 14298, 14303, 14307, 14328, 14331, 14336,
14347, 14349 14337, 14347, 14349
* Support for STT_GNU_IFUNC symbols added for s390 and s390x. * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
Optimized versions of memcpy, memset, and memcmp added for System z10 and Optimized versions of memcpy, memset, and memcmp added for System z10 and

View File

@ -1,5 +1,5 @@
/* Test and measure strncasecmp functions. /* Test and measure strncasecmp functions.
Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc. Copyright (C) 1999-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Written by Jakub Jelinek <jakub@redhat.com>, 1999. Written by Jakub Jelinek <jakub@redhat.com>, 1999.
@ -251,9 +251,9 @@ do_random_tests (void)
} }
} }
/* Regression test for BZ #12205 */
static void static void
check1 (void) bz12205 (void)
{ {
static char cp [4096+16] __attribute__ ((aligned(4096))); static char cp [4096+16] __attribute__ ((aligned(4096)));
static char gotrel[4096] __attribute__ ((aligned(4096))); static char gotrel[4096] __attribute__ ((aligned(4096)));
@ -270,6 +270,15 @@ check1 (void)
check_result (impl, s1, s2, n, exp_result); check_result (impl, s1, s2, n, exp_result);
} }
/* Regression test for BZ #14195 */
static void
bz14195 (void)
{
const char *empty_string = "";
FOR_EACH_IMPL (impl, 0)
check_result (impl, empty_string, "", 5, 0);
}
int int
test_main (void) test_main (void)
{ {
@ -277,7 +286,8 @@ test_main (void)
test_init (); test_init ();
check1 (); bz12205 ();
bz14195 ();
printf ("%23s", ""); printf ("%23s", "");
FOR_EACH_IMPL (impl, 0) FOR_EACH_IMPL (impl, 0)

2
sysdeps/i386/i686/multiarch/strcmp-ssse3.S Normal file → Executable file
View File

@ -2445,7 +2445,7 @@ L(less16bytes_sncmp):
# endif # endif
jne L(neq_sncmp) jne L(neq_sncmp)
test %cl, %cl test %cl, %cl
je L(eq) je L(eq_sncmp)
cmp $1, REM cmp $1, REM
je L(eq_sncmp) je L(eq_sncmp)