summaryrefslogtreecommitdiff
path: root/sys/src/cmd/tapefs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-08-06 02:25:22 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2012-08-06 02:25:22 +0200
commit6baaf0a7735a875d5d5384362e535ce127996926 (patch)
tree5cb785a52ac69b635dfacfba9820ae605de9e159 /sys/src/cmd/tapefs
parent5eec707368a91687c5e8ff7941ab6df5bf9e7fa3 (diff)
unzip/zipfs: skip over variable length comment in end of table of content record
Diffstat (limited to 'sys/src/cmd/tapefs')
-rw-r--r--sys/src/cmd/tapefs/zipfs.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/src/cmd/tapefs/zipfs.c b/sys/src/cmd/tapefs/zipfs.c
index 4017a3906..a7279b2e0 100644
--- a/sys/src/cmd/tapefs/zipfs.c
+++ b/sys/src/cmd/tapefs/zipfs.c
@@ -189,10 +189,14 @@ findCDir(Biobuf *bin)
ecoff = Bseek(bin, -ZECHeadSize, 2);
if(ecoff < 0)
sysfatal("can't seek to header");
-
- if(get4(bin) != ZECHeader)
- sysfatal("bad magic number on directory");
-
+ off = 0;
+ while(get4(bin) != ZECHeader){
+ if(ecoff <= 0 || off >= 1024)
+ sysfatal("bad magic number");
+ off++;
+ ecoff--;
+ Bseek(bin, ecoff, 0);
+ }
get2(bin);
get2(bin);
get2(bin);