summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/tools/archivers/cpio/default.nix1
-rw-r--r--pkgs/tools/archivers/cpio/symlink.patch13
2 files changed, 14 insertions, 0 deletions
diff --git a/pkgs/tools/archivers/cpio/default.nix b/pkgs/tools/archivers/cpio/default.nix
index 69e5b176879..deed73bc031 100644
--- a/pkgs/tools/archivers/cpio/default.nix
+++ b/pkgs/tools/archivers/cpio/default.nix
@@ -6,4 +6,5 @@ stdenv.mkDerivation {
     url = http://ftp.gnu.org/gnu/cpio/cpio-2.7.tar.bz2;
     md5 = "69ad6cb3d288aafe5f969f68d9fd0fb7";
   };
+  patches = [./symlink.patch];
 }
diff --git a/pkgs/tools/archivers/cpio/symlink.patch b/pkgs/tools/archivers/cpio/symlink.patch
new file mode 100644
index 00000000000..89f82daa522
--- /dev/null
+++ b/pkgs/tools/archivers/cpio/symlink.patch
@@ -0,0 +1,13 @@
+http://lists.gnu.org/archive/html/bug-cpio/2006-11/msg00003.html
+
+diff -Ndpru cpio-2.7/src/copyout.c cpio-2.7.fixed/src/copyout.c
+--- cpio-2.7/src/copyout.c      2006-09-27 02:19:44.000000000 -0600
++++ cpio-2.7.fixed/src/copyout.c        2006-11-12 18:58:25.000000000 -0700
+@@ -806,6 +806,7 @@ process_copy_out ()
+		    free (link_name);
+		    continue;
+		  }
++               link_name[link_size] = '\0';
+		cpio_safer_name_suffix (link_name, false,
+					!no_abs_paths_flag, true);
+		link_size = strlen (link_name);