summaryrefslogtreecommitdiffstats
path: root/meta/packages/ipkg/files
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2006-08-08 12:18:53 +0000
committerRichard Purdie <richard@openedhand.com>2006-08-08 12:18:53 +0000
commitb161186a4e04fef1fcc5a2c4db6c42cb1c0cc7f4 (patch)
tree0859aeb83946e6680ed2d140b6a3546730dfaaee /meta/packages/ipkg/files
parentee105762c656bb0c0f505b60efb774789e921a0f (diff)
downloadpoky-b161186a4e04fef1fcc5a2c4db6c42cb1c0cc7f4.tar.gz
ipkg: Fix a problem with paths lengths triggering the use of GNU tar extensions and ipkg not understanding them
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@596 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/ipkg/files')
-rw-r--r--meta/packages/ipkg/files/fix_tar_extension.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/meta/packages/ipkg/files/fix_tar_extension.patch b/meta/packages/ipkg/files/fix_tar_extension.patch
new file mode 100644
index 0000000000..d9db5fca2c
--- /dev/null
+++ b/meta/packages/ipkg/files/fix_tar_extension.patch
@@ -0,0 +1,37 @@
1Index: C/libbb/unarchive.c
2===================================================================
3--- C.orig/libbb/unarchive.c 2005-02-05 16:58:19.000000000 -0500
4+++ C/libbb/unarchive.c 2006-08-08 08:10:14.268431408 -0400
5@@ -28,7 +28,7 @@
6 #include "libbb.h"
7
8 #define CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY 1
9-// #define CONFIG_FEATURE_TAR_GNU_EXTENSIONS
10+#define CONFIG_FEATURE_TAR_GNU_EXTENSIONS 1
11
12 #ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
13 static char *longname = NULL;
14@@ -657,7 +657,10 @@
15 # ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
16 case 'L': {
17 longname = xmalloc(tar_entry->size + 1);
18- archive_xread_all((int) tar_stream, longname, tar_entry->size);
19+ if(fread(longname, tar_entry->size, 1, tar_stream) != 1) {
20+ error_msg("Short read in gnu extension");
21+ return(NULL);
22+ }
23 longname[tar_entry->size] = '\0';
24 archive_offset += tar_entry->size;
25
26@@ -665,7 +668,10 @@
27 }
28 case 'K': {
29 linkname = xmalloc(tar_entry->size + 1);
30- archive_xread_all((int) tar_stream, longname, tar_entry->size);
31+ if(fread(linkname, tar_entry->size, 1, tar_stream) != 1) {
32+ error_msg("Short read in gnu extension");
33+ return(NULL);
34+ }
35 linkname[tar_entry->size] = '\0';
36 archive_offset += tar_entry->size;
37