summaryrefslogtreecommitdiff
path: root/sys/src/cmd/tapefs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-10-03 17:30:03 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-10-03 17:30:03 +0200
commit7ad47f1083f6d62d1135fe49807b51380cc4d7cb (patch)
tree1e01343513bb8f03765987a1341dd8ccb8a37440 /sys/src/cmd/tapefs
parentf163d0014a6ccd3417c45a05f831e73f2f9f6cf7 (diff)
tarfs: make file name safe, canonical and free of . and .. (from sources)
Diffstat (limited to 'sys/src/cmd/tapefs')
-rw-r--r--sys/src/cmd/tapefs/tarfs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/src/cmd/tapefs/tarfs.c b/sys/src/cmd/tapefs/tarfs.c
index 96271a866..c58db4bbb 100644
--- a/sys/src/cmd/tapefs/tarfs.c
+++ b/sys/src/cmd/tapefs/tarfs.c
@@ -144,10 +144,12 @@ populate(char *name)
}
f.mode &= DMDIR | 0777;
- /* make file name safe and canonical */
+ /* make file name safe, canonical and free of . and .. */
while (fname[0] == '/') /* don't allow absolute paths */
++fname;
cleanname(fname);
+ while (strncmp(fname, "../", 3) == 0)
+ fname += 3;
/* reject links */
linkflg = hp->linkflag == LF_SYMLINK1 ||