summaryrefslogtreecommitdiffstats
path: root/package/busybox/busybox-1.10.1-tar.patch
blob: fb479dd26a6939cb8c9fd7406821200ed98328a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
--- busybox-1.10.1/archival/libunarchive/get_header_tar.c	Sat Apr 19 05:50:29 2008
+++ busybox-1.10.1-tar/archival/libunarchive/get_header_tar.c	Tue Apr 29 06:12:29 2008
@@ -112,7 +112,7 @@
 	archive_handle->offset += 512;
 
 	/* If there is no filename its an empty header */
-	if (tar.name[0] == 0) {
+	if (tar.name[0] == 0 && tar.prefix[0] == 0) {
 		if (end) {
 			/* This is the second consecutive empty header! End of archive!
 			 * Read until the end to empty the pipe from gz or bz2
@@ -211,9 +211,12 @@
 	/* getOctal trashes subsequent field, therefore we call it
 	 * on fields in reverse order */
 	if (tar.devmajor[0]) {
+		char t = tar.prefix[0];
+		/* we trash prefix[0] here, but we DO need it later! */
 		unsigned minor = GET_OCTAL(tar.devminor);
 		unsigned major = GET_OCTAL(tar.devmajor);
 		file_header->device = makedev(major, minor);
+		tar.prefix[0] = t;
 	}
 	file_header->link_target = NULL;
 	if (!linkname && parse_names && tar.linkname[0]) {