summaryrefslogtreecommitdiffstats
path: root/libbb/unarchive.c
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 /libbb/unarchive.c
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
Diffstat (limited to 'libbb/unarchive.c')
-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);
/*