forked from pool/coreutils
s/MB_CUR_MAX/MB_LEN_MAX/, and add a test case
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=257
This commit is contained in:
parent
feef8ae1a8
commit
2a760ea199
@ -7,7 +7,8 @@
|
||||
src/sort.c | 743 +++++++++++++++++++++++++++++++++++++++++---
|
||||
src/unexpand.c | 228 +++++++++++++
|
||||
src/uniq.c | 265 +++++++++++++++
|
||||
tests/local.mk | 1
|
||||
tests/i18n/sort.sh | 29 +
|
||||
tests/local.mk | 2
|
||||
tests/misc/cut.pl | 7
|
||||
tests/misc/expand.pl | 40 ++
|
||||
tests/misc/fold.pl | 50 ++
|
||||
@ -18,7 +19,7 @@
|
||||
tests/misc/unexpand.pl | 39 ++
|
||||
tests/misc/uniq.pl | 55 +++
|
||||
tests/pr/pr-tests.pl | 49 ++
|
||||
20 files changed, 3194 insertions(+), 180 deletions(-)
|
||||
21 files changed, 3224 insertions(+), 180 deletions(-)
|
||||
|
||||
Index: lib/linebuffer.h
|
||||
===================================================================
|
||||
@ -3261,8 +3262,8 @@ Index: src/sort.c
|
||||
+
|
||||
+ if (ignore || translate)
|
||||
+ {
|
||||
+ char *copy_a = (char *) xmalloc((lena + lenb) * MB_CUR_MAX + 2);
|
||||
+ char *copy_b = copy_a + (lena * MB_CUR_MAX) + 1;
|
||||
+ char *copy_a = (char *) xmalloc((lena + lenb) * MB_LEN_MAX + 2);
|
||||
+ char *copy_b = copy_a + (lena * MB_LEN_MAX) + 1;
|
||||
+ size_t new_len_a, new_len_b;
|
||||
+ size_t i, j;
|
||||
+
|
||||
@ -4112,6 +4113,14 @@ Index: tests/local.mk
|
||||
tests/misc/sort-merge.pl \
|
||||
tests/misc/sort-merge-fdlimit.sh \
|
||||
tests/misc/sort-month.sh \
|
||||
@@ -516,6 +517,7 @@ all_tests = \
|
||||
tests/du/threshold.sh \
|
||||
tests/du/trailing-slash.sh \
|
||||
tests/du/two-args.sh \
|
||||
+ tests/i18n/sort.sh \
|
||||
tests/id/gnu-zero-uids.sh \
|
||||
tests/id/no-context.sh \
|
||||
tests/id/context.sh \
|
||||
Index: tests/misc/cut.pl
|
||||
===================================================================
|
||||
--- tests/misc/cut.pl.orig
|
||||
@ -4718,3 +4727,37 @@ Index: tests/pr/pr-tests.pl
|
||||
my $save_temps = $ENV{DEBUG};
|
||||
my $verbose = $ENV{VERBOSE};
|
||||
|
||||
Index: tests/i18n/sort.sh
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ tests/i18n/sort.sh
|
||||
@@ -0,0 +1,29 @@
|
||||
+#!/bin/sh
|
||||
+# Verify sort's multi-byte support.
|
||||
+
|
||||
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
|
||||
+print_ver_ sort
|
||||
+
|
||||
+export LC_ALL=en_US.UTF-8
|
||||
+locale -k LC_CTYPE | grep -q "charmap.*UTF-8" \
|
||||
+ || skip_ "No UTF-8 locale available"
|
||||
+
|
||||
+# Enable heap consistency checkng on older systems
|
||||
+export MALLOC_CHECK_=2
|
||||
+
|
||||
+
|
||||
+# check buffer overflow issue due to
|
||||
+# expanding multi-byte representation due to case conversion
|
||||
+# https://bugzilla.suse.com/show_bug.cgi?id=928749
|
||||
+cat <<EOF > exp
|
||||
+.
|
||||
+ɑ
|
||||
+EOF
|
||||
+cat <<EOF | sort -f > out || fail=1
|
||||
+.
|
||||
+ɑ
|
||||
+EOF
|
||||
+compare exp out || { fail=1; cat out; }
|
||||
+
|
||||
+
|
||||
+Exit $fail
|
||||
|
@ -16,7 +16,7 @@ Index: tests/local.mk
|
||||
===================================================================
|
||||
--- tests/local.mk.orig
|
||||
+++ tests/local.mk
|
||||
@@ -661,14 +661,9 @@ all_tests = \
|
||||
@@ -662,14 +662,9 @@ all_tests = \
|
||||
# See tests/factor/create-test.sh.
|
||||
tf = tests/factor
|
||||
factor_tests = \
|
||||
|
@ -8,9 +8,11 @@ Tue May 12 09:32:53 UTC 2015 - mail@bernhard-voelker.de
|
||||
Tue May 12 08:56:13 UTC 2015 - mail@bernhard-voelker.de
|
||||
|
||||
- Fix memory handling error with case insensitive sort using UTF-8
|
||||
(boo#928749):
|
||||
* coreutils-i18n.patch: Allocate more memory as the upper form of
|
||||
some multi-byte characters may be 1 byte wider.
|
||||
(boo#928749): coreutils-i18n.patch
|
||||
src/sort.c (keycompare_mb): Ensure the buffer is big enough
|
||||
to handle anything output from wctomb(). Theoretically any
|
||||
input char could be converted to multiple output chars,
|
||||
and so we need to multiply the storage by MB_LEN_MAX.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 7 18:18:31 UTC 2015 - crrodriguez@opensuse.org
|
||||
|
@ -8,9 +8,11 @@ Tue May 12 09:32:53 UTC 2015 - mail@bernhard-voelker.de
|
||||
Tue May 12 08:56:13 UTC 2015 - mail@bernhard-voelker.de
|
||||
|
||||
- Fix memory handling error with case insensitive sort using UTF-8
|
||||
(boo#928749):
|
||||
* coreutils-i18n.patch: Allocate more memory as the upper form of
|
||||
some multi-byte characters may be 1 byte wider.
|
||||
(boo#928749): coreutils-i18n.patch
|
||||
src/sort.c (keycompare_mb): Ensure the buffer is big enough
|
||||
to handle anything output from wctomb(). Theoretically any
|
||||
input char could be converted to multiple output chars,
|
||||
and so we need to multiply the storage by MB_LEN_MAX.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 7 18:18:31 UTC 2015 - crrodriguez@opensuse.org
|
||||
|
Loading…
Reference in New Issue
Block a user