From fa0e5b2896461621527bd633739dad55cb9383fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Piotrowski?= Date: Sat, 15 Mar 2014 14:34:53 +0100 Subject: main/coreutils: fix segmentation fault in shuf --- main/coreutils/APKBUILD | 16 +++-- main/coreutils/coreutils-8.22-shuf-segfault.patch | 74 +++++++++++++++++++++++ 2 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 main/coreutils/coreutils-8.22-shuf-segfault.patch (limited to 'main/coreutils') diff --git a/main/coreutils/APKBUILD b/main/coreutils/APKBUILD index 41ea3f4cb..96d32b5b6 100644 --- a/main/coreutils/APKBUILD +++ b/main/coreutils/APKBUILD @@ -1,8 +1,8 @@ -# Contributor: Michael Mason +# Contributor: Michael Mason # Maintainer: Natanael Copa pkgname=coreutils pkgver=8.22 -pkgrel=0 +pkgrel=1 pkgdesc="The basic file, shell and text manipulation utilities" url="http://www.gnu.org/software/coreutils/" arch="all" @@ -12,7 +12,8 @@ makedepends="bash acl-dev perl" install= subpackages="$pkgname-doc" install="$pkgname.post-deinstall" -source="http://ftp.gnu.org/gnu/coreutils/$pkgname-$pkgver.tar.xz" +source="http://ftp.gnu.org/gnu/coreutils/$pkgname-$pkgver.tar.xz + coreutils-8.22-shuf-segfault.patch" _builddir="$srcdir"/$pkgname-$pkgver build() { @@ -50,6 +51,9 @@ package() { mv chroot "$pkgdir"/usr/sbin/ } -md5sums="8fb0ae2267aa6e728958adc38f8163a2 coreutils-8.22.tar.xz" -sha256sums="5b3e94998152c017e6c75d56b9b994188eb71bf46d4038a642cb9141f6ff1212 coreutils-8.22.tar.xz" -sha512sums="2f14c2cab7001297309b4774bf3d610ecbaaec7d98d68e3792b24d2b52d319c4e30e55f803e56c48b9b9a1b76eb1c9636be5444fe1dc1dbcdd6150cfcb34847f coreutils-8.22.tar.xz" +md5sums="8fb0ae2267aa6e728958adc38f8163a2 coreutils-8.22.tar.xz +94f7e6f373f37beb236caabed8fcdb52 coreutils-8.22-shuf-segfault.patch" +sha256sums="5b3e94998152c017e6c75d56b9b994188eb71bf46d4038a642cb9141f6ff1212 coreutils-8.22.tar.xz +3d9074964b3be7ccf2a384de4a48ef372db13fd77c2fc7316d5a94f3fdcae17e coreutils-8.22-shuf-segfault.patch" +sha512sums="2f14c2cab7001297309b4774bf3d610ecbaaec7d98d68e3792b24d2b52d319c4e30e55f803e56c48b9b9a1b76eb1c9636be5444fe1dc1dbcdd6150cfcb34847f coreutils-8.22.tar.xz +1e2ff3b4d32c3c833ee7b4fb29d7509bebfb3c8c5ea0c2bcfff48d221d03d3a6da47be6be5f723d792a26c66063a99293ab9a7b609726357bc45fb2a01bad844 coreutils-8.22-shuf-segfault.patch" diff --git a/main/coreutils/coreutils-8.22-shuf-segfault.patch b/main/coreutils/coreutils-8.22-shuf-segfault.patch new file mode 100644 index 000000000..e22b3c7b2 --- /dev/null +++ b/main/coreutils/coreutils-8.22-shuf-segfault.patch @@ -0,0 +1,74 @@ +From 24eb395471176e24762b08bfcef7562911537504 Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Sun, 23 Feb 2014 15:34:48 -0800 +Subject: [PATCH] shuf: with -r, don't dump core if the input is empty + +Problem reported by valiant xiao in . +* NEWS: Document this. +* src/shuf.c (main): With -r, report an error if the input is empty. +* tests/misc/shuf.sh: Test for the bug. +--- + NEWS | 3 +++ + src/shuf.c | 15 +++++++++++---- + tests/misc/shuf.sh | 4 ++++ + 3 files changed, 18 insertions(+), 4 deletions(-) + +diff --git a/NEWS b/NEWS +index e72942b..2df246d 100644 +--- a/NEWS ++++ b/NEWS +@@ -22,6 +22,9 @@ GNU coreutils NEWS -*- outline -*- + it would display an error, requiring --no-dereference to avoid the issue. + [bug introduced in coreutils-5.3.0] + ++ shuf -r no longer dumps core if the input is empty. ++ [bug introduced in coreutils-8.22] ++ + ** New features + + od accepts a new option: --endian=TYPE to handle inputs with different byte +diff --git a/src/shuf.c b/src/shuf.c +index d4641fe..2a91072 100644 +--- a/src/shuf.c ++++ b/src/shuf.c +@@ -576,11 +576,18 @@ main (int argc, char **argv) + /* Generate output according to requested method */ + if (repeat) + { +- if (input_range) +- i = write_random_numbers (randint_source, head_lines, +- lo_input, hi_input, eolbyte); ++ if (head_lines == 0) ++ i = 0; + else +- i = write_random_lines (randint_source, head_lines, line, n_lines); ++ { ++ if (n_lines == 0) ++ error (EXIT_FAILURE, 0, _("No lines to repeat")); ++ if (input_range) ++ i = write_random_numbers (randint_source, head_lines, ++ lo_input, hi_input, eolbyte); ++ else ++ i = write_random_lines (randint_source, head_lines, line, n_lines); ++ } + } + else + { +diff --git a/tests/misc/shuf.sh b/tests/misc/shuf.sh +index d3ea1f2..d7251d1 100755 +--- a/tests/misc/shuf.sh ++++ b/tests/misc/shuf.sh +@@ -43,6 +43,10 @@ compare in out1 || { fail=1; echo "not a permutation" 1>&2; } + t=$(shuf -e a b c d e | sort | fmt) + test "$t" = 'a b c d e' || { fail=1; echo "not a permutation" 1>&2; } + ++# coreutils-8.22 dumps core. ++shuf -er ++test $? -eq 1 || fail=1 ++ + # Before coreutils-6.3, this would infloop. + # "seq 1860" produces 8193 (8K + 1) bytes of output. + seq 1860 | shuf > /dev/null || fail=1 +-- +1.8.5.3 + -- cgit v1.2.3