summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2009-02-12 08:27:50 (EST)
committer ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2009-02-12 08:27:50 (EST)
commit203ec8ddc7f466367c61bc9005c616685d3e74b5 (patch)
tree06725823c462cfba06c4bd6968e3e9c8ff8d1591
parentf5afe41a675508672a51d90b84d61a124cd8939d (diff)
Thanks to
Frans Meulenbroeks http://groups.google.com/group/opkg-devel/browse_thread/thread/23c3557277de0f2e If a file name in a tar archive is exactly 100 bytes long the name field is completely filled and there is no terminating null byte; so extraction of the file will yield a name that is extended with the mode (e.g. 000644). The attached patch cures it although there might be better solutions. The problem is also in busybox tar and reported there too. Frans. git-svn-id: http://opkg.googlecode.com/svn/trunk@201 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
-rw-r--r--libbb/unarchive.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libbb/unarchive.c b/libbb/unarchive.c
index bb70ccb..24877e7 100644
--- a/libbb/unarchive.c
+++ b/libbb/unarchive.c
@@ -606,6 +606,10 @@ file_header_t *get_header_tar(FILE *tar_stream)
tar_entry->name = concat_path_file(tar.formated.prefix, tar.formated.name);
}
+ if (strlen(tar_entry->name) > 100) {
+ tar_entry->name[100] = 0;
+ }
+
// tar_entry->name = xstrdup(tar.formated.name);
/*