[arch-commits] Commit in coreutils/trunk (PKGBUILD coreutils-8.22-shuf-segfault.patch)

Bartłomiej Piotrowski bpiotrowski at nymeria.archlinux.org
Fri Mar 14 18:34:52 UTC 2014


    Date: Friday, March 14, 2014 @ 19:34:52
  Author: bpiotrowski
Revision: 207756

upgpkg: coreutils 8.22-3

fix segmentation fault when running shuf -e (FS#39425)

Added:
  coreutils/trunk/coreutils-8.22-shuf-segfault.patch
Modified:
  coreutils/trunk/PKGBUILD

------------------------------------+
 PKGBUILD                           |   33 +++++++++------
 coreutils-8.22-shuf-segfault.patch |   74 +++++++++++++++++++++++++++++++++++
 2 files changed, 95 insertions(+), 12 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2014-03-14 18:33:53 UTC (rev 207755)
+++ PKGBUILD	2014-03-14 18:34:52 UTC (rev 207756)
@@ -1,34 +1,43 @@
 # $Id$
-# Maintainer: Allan McRae <allan at archlinux.org>
+# Maintainer:  Sébastien "Seblu" Luttringer
+# Maintainer:  Bartłomiej Piotrowski <bpiotrowski at archlinux.org>
+# Contributor: Allan McRae <allan at archlinux.org>
 # Contributor: judd <jvinet at zeroflux.org>
 
 pkgname=coreutils
 pkgver=8.22
-pkgrel=2
-pkgdesc="The basic file, shell and text manipulation utilities of the GNU operating system"
+pkgrel=3
+pkgdesc='The basic file, shell and text manipulation utilities of the GNU operating system'
 arch=('i686' 'x86_64')
 license=('GPL3')
-url="http://www.gnu.org/software/coreutils"
+url='http://www.gnu.org/software/coreutils'
 groups=('base')
 depends=('glibc' 'pam' 'acl' 'gmp' 'libcap' 'openssl')
-install=${pkgname}.install
-source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig})
+install=$pkgname.install
+source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig}
+        coreutils-8.22-shuf-segfault.patch)
 md5sums=('8fb0ae2267aa6e728958adc38f8163a2'
-         'SKIP')
+         'SKIP'
+         '94f7e6f373f37beb236caabed8fcdb52')
 
+prepare() {
+  cd $pkgname-$pkgver
+  patch -p1 -i ../coreutils-8.22-shuf-segfault.patch
+}
+
 build() {
-  cd ${srcdir}/${pkgname}-${pkgver}
+  cd $pkgname-$pkgver
   ./configure --prefix=/usr --libexecdir=/usr/lib --with-openssl \
-              --enable-no-install-program=groups,hostname,kill,uptime
+    --enable-no-install-program=groups,hostname,kill,uptime
   make
 }
 
 check() {
-  cd ${srcdir}/${pkgname}-${pkgver}
+  cd $pkgname-$pkgver
   make RUN_EXPENSIVE_TESTS=yes check
 }
 
 package() {
-  cd ${srcdir}/${pkgname}-${pkgver}
-  make DESTDIR=${pkgdir} install
+  cd $pkgname-$pkgver
+  make DESTDIR="$pkgdir" install
 }

Added: coreutils-8.22-shuf-segfault.patch
===================================================================
--- coreutils-8.22-shuf-segfault.patch	                        (rev 0)
+++ coreutils-8.22-shuf-segfault.patch	2014-03-14 18:34:52 UTC (rev 207756)
@@ -0,0 +1,74 @@
+From 24eb395471176e24762b08bfcef7562911537504 Mon Sep 17 00:00:00 2001
+From: Paul Eggert <eggert at cs.ucla.edu>
+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 <http://bugs.gnu.org/16855>.
+* 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
+




More information about the arch-commits mailing list