summaryrefslogtreecommitdiffstats
path: root/libbb
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
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')
-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);
/*