--- /dev/null
+commit a3f1d933cc5e61037100f5e60eac45764b8b4b50
+Author: Sergey Poznyakoff <gray@gnu.org.ua>
+Date: Thu Mar 11 12:19:32 2010 +0200
+
+ Bugfix.
+
+ * src/names.c (collect_and_sort_names): Initialize prev_name.
+ Reported by Dmitry V. Levin.
+
+diff --git a/src/names.c b/src/names.c
+index 1146020..ea2ce76 100644
+--- a/src/names.c
++++ b/src/names.c
+@@ -871,7 +871,7 @@ void
+ collect_and_sort_names (void)
+ {
+ struct name *name;
+- struct name *next_name, *prev_name;
++ struct name *next_name, *prev_name = NULL;
+ int num_names;
+ struct stat statbuf;
+ Hash_table *nametab;
+commit 67b4f3519d838c6f16f5b6b63c0b9b8669fb3dd9
+Author: Sergey Poznyakoff <gray@gnu.org.ua>
+Date: Fri Mar 12 09:48:46 2010 +0200
+
+ Bugfixes.
+
+ * src/buffer.c (check_label_pattern): Initialize result.
+ * tests/remfiles01.at: Skip if run with root privileges.
+
+diff --git a/src/buffer.c b/src/buffer.c
+index 8e1bb9b..dfc8456 100644
+--- a/src/buffer.c
++++ b/src/buffer.c
+@@ -1374,7 +1374,7 @@ static bool
+ check_label_pattern (const char *label)
+ {
+ char *string;
+- bool result;
++ bool result = false;
+
+ if (fnmatch (volume_label_option, label, 0) == 0)
+ return true;
+diff --git a/tests/remfiles01.at b/tests/remfiles01.at
+index 940fd95..73752b4 100644
+--- a/tests/remfiles01.at
++++ b/tests/remfiles01.at
+@@ -30,6 +30,7 @@ AT_KEYWORDS([create remove-files remfiles01 gzip])
+
+ unset TAR_OPTIONS
+ AT_CHECK([
++AT_UNPRIVILEGED_PREREQ
+ AT_GZIP_PREREQ
+ AT_SORT_PREREQ
+
+commit 340dbf5aabfee4e1e657f8ebf202a2fee1750a63
+Author: Sergey Poznyakoff <gray@gnu.org.ua>
+Date: Sat Mar 20 13:14:31 2010 +0200
+
+ Fix undesired error exit on receiving SIGPIPE.
+
+ * src/tar.c: Do not ignore SIGPIPE.
+ * tests/sigpipe.at: New testcase.
+ * tests/Makefile.am, tests/testsuite.at: Add sigpipe.at
+ * tests/remfiles01.at: Fix error code expectation.
+ * NEWS: Update.
+
+diff --git a/src/tar.c b/src/tar.c
+index e3fdf7b..b127963 100644
+--- a/src/tar.c
++++ b/src/tar.c
+@@ -2570,8 +2570,6 @@ main (int argc, char **argv)
+
+ obstack_init (&argv_stk);
+
+- /* Ensure default behavior for some signals */
+- signal (SIGPIPE, SIG_IGN);
+ /* System V fork+wait does not work if SIGCHLD is ignored. */
+ signal (SIGCHLD, SIG_DFL);
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 8f16244..31811b0 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -127,6 +127,7 @@ TESTSUITE_AT = \
+ shortfile.at\
+ shortupd.at\
+ shortrec.at\
++ sigpipe.at\
+ sparse01.at\
+ sparse02.at\
+ sparse03.at\
+diff --git a/tests/remfiles01.at b/tests/remfiles01.at
+index 73752b4..86b5c03 100644
+--- a/tests/remfiles01.at
++++ b/tests/remfiles01.at
+@@ -52,7 +52,9 @@ EC=$?
+ sed -n '/(child)/p' err >&2
+ rm err
+ find . | sort
+-exit $EC
++# Gzip exit code is propagated to the shell. Usually it is
++# 141. We convert all non-zero exits to 2 to make it predictable.
++test $EC && exit 2
+ ],
+ [2],
+ [.
+diff --git a/tests/sigpipe.at b/tests/sigpipe.at
+new file mode 100644
+index 0000000..9edca77
+--- /dev/null
++++ b/tests/sigpipe.at
+@@ -0,0 +1,39 @@
++# Process this file with autom4te to create testsuite. -*- Autotest -*-
++
++# Test suite for GNU tar.
++# Copyright (C) 2010 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <http://www.gnu.org/licenses/>.
++
++AT_SETUP([sigpipe handling])
++AT_KEYWORDS([sigpipe])
++
++# Description: Tar 1.23 ignored sigpipe which lead to spurious "write
++# error" diagnostics when piping output to another programs.
++# Reported-by: "Dmitry V. Levin" <ldv@altlinux.org>
++# References: http://lists.gnu.org/archive/html/bug-tar/2010-03/msg00039.html
++# <20100319184141.GC30047@wo.int.altlinux.org>
++
++AT_CHECK([
++genfile --length 2048 --file first
++genfile --length 2048 --file second
++genfile --length 2049 --file third
++
++tar cf archive first second third
++
++tar tf archive | :
++],
++[0])
++
++AT_CLEANUP
+diff --git a/tests/testsuite.at b/tests/testsuite.at
+index 3e75ed8..9205d52 100644
+--- a/tests/testsuite.at
++++ b/tests/testsuite.at
+@@ -231,6 +231,8 @@ m4_include([remfiles01.at])
+ m4_include([remfiles02.at])
+ m4_include([remfiles03.at])
+
++m4_include([sigpipe.at])
++
+ m4_include([star/gtarfail.at])
+ m4_include([star/gtarfail2.at])
+
+commit 40dea1ae7fc892a54eae2efd30ddd8559c697525
+Author: Sergey Poznyakoff <gray@gnu.org.ua>
+Date: Sat Mar 27 22:24:19 2010 +0200
+
+ Fix coredump.
+
+ * src/names.c (collect_and_sort_names): Remove
+ entry from the table before freeing it.
+
+diff --git a/src/names.c b/src/names.c
+index 2beaf3e..a3c6f58 100644
+--- a/src/names.c
++++ b/src/names.c
+@@ -986,6 +986,7 @@ collect_and_sort_names (void)
+ {
+ if (p->child)
+ rebase_child_list (p->child, name);
++ hash_delete (nametab, name);
+ /* FIXME: remove_directory (p->caname); ? */
+ remname (p);
+ free_name (p);