diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-10-03 17:30:03 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-10-03 17:30:03 +0200 |
commit | 7ad47f1083f6d62d1135fe49807b51380cc4d7cb (patch) | |
tree | 1e01343513bb8f03765987a1341dd8ccb8a37440 /sys/src/cmd/tapefs | |
parent | f163d0014a6ccd3417c45a05f831e73f2f9f6cf7 (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.c | 4 |
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 || |