summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta/packages/ipkg/files/fix_tar_extension.patch37
-rw-r--r--meta/packages/ipkg/ipkg.inc1
-rw-r--r--meta/packages/ipkg/ipkg_0.99.154.bb2
3 files changed, 39 insertions, 1 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 @@
+Index: C/libbb/unarchive.c
+===================================================================
+--- C.orig/libbb/unarchive.c 2005-02-05 16:58:19.000000000 -0500
++++ C/libbb/unarchive.c 2006-08-08 08:10:14.268431408 -0400
+@@ -28,7 +28,7 @@
+ #include "libbb.h"
+
+ #define CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY 1
+-// #define CONFIG_FEATURE_TAR_GNU_EXTENSIONS
++#define CONFIG_FEATURE_TAR_GNU_EXTENSIONS 1
+
+ #ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
+ static char *longname = NULL;
+@@ -657,7 +657,10 @@
+ # ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
+ case 'L': {
+ longname = xmalloc(tar_entry->size + 1);
+- archive_xread_all((int) tar_stream, longname, tar_entry->size);
++ if(fread(longname, tar_entry->size, 1, tar_stream) != 1) {
++ error_msg("Short read in gnu extension");
++ return(NULL);
++ }
+ longname[tar_entry->size] = '\0';
+ archive_offset += tar_entry->size;
+
+@@ -665,7 +668,10 @@
+ }
+ case 'K': {
+ linkname = xmalloc(tar_entry->size + 1);
+- archive_xread_all((int) tar_stream, longname, tar_entry->size);
++ if(fread(linkname, tar_entry->size, 1, tar_stream) != 1) {
++ error_msg("Short read in gnu extension");
++ return(NULL);
++ }
+ linkname[tar_entry->size] = '\0';
+ archive_offset += tar_entry->size;
+
diff --git a/meta/packages/ipkg/ipkg.inc b/meta/packages/ipkg/ipkg.inc
index 8fc6c9efe0..49bdd22c08 100644
--- a/meta/packages/ipkg/ipkg.inc
+++ b/meta/packages/ipkg/ipkg.inc
@@ -10,6 +10,7 @@ FILES_libipkg = "${libdir}"
AUTO_LIBNAME_PKGS = "libipkg"
SRC_URI = "${HANDHELDS_CVS};module=familiar/dist/ipkg;tag=${@'V' + bb.data.getVar('PV',d,1).replace('.', '-')} \
+ file://fix_tar_extension.patch;patch=1 \
file://terse.patch;patch=1"
S = "${WORKDIR}/ipkg/C"
diff --git a/meta/packages/ipkg/ipkg_0.99.154.bb b/meta/packages/ipkg/ipkg_0.99.154.bb
index de6af147b6..532072d387 100644
--- a/meta/packages/ipkg/ipkg_0.99.154.bb
+++ b/meta/packages/ipkg/ipkg_0.99.154.bb
@@ -1,2 +1,2 @@
include ipkg.inc
-PR = "r3"
+PR = "r4"