Applied patch from [Bug 1011492] to ensure we handle zipfiles with a prefix block...
authorPat Thoyts <patthoyts@users.sourceforge.net>
Thu, 22 Jan 2009 01:34:04 +0000 (01:34 +0000)
committerPat Thoyts <patthoyts@users.sourceforge.net>
Thu, 22 Jan 2009 01:34:04 +0000 (01:34 +0000)
ChangeLog
library/zipvfs.tcl

index 8bfb418d73f1bf04a31f46c31615e983cc7f6261..16dcd5972763fc07023b75c6b20f7e15beb67464 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-01-22  Pat Thoyts  <patthoyts@users.sourceforge.net>
+
+       * library/zipvfs.tcl: Applied patch from [Bug 1011492] to ensure
+       we handle zipfiles with a prefix block robustly.
+
 2009-01-21  Andreas Kupries  <andreask@activestate.com>
 
        * pkgIndex.tcl.in: Incremented version of vfs::zip
index 14c3ab63bb7f1453f5370be606760497336f238c..84a64d1951643601e88dfadf4d25ab4a59b458f8 100644 (file)
@@ -434,6 +434,9 @@ proc zip::TOC {fd arr} {
        return -code error "bad central header: $x"
     }
 
+    upvar #0 zip::$fd cb
+    incr sb(ino) $cb(base) ;# adjust ino for start of archive offset
+
     foreach v {vem ver flags method disk attr} {
        set sb($v) [expr {$sb($v) & 0xffff}]
     }
@@ -469,7 +472,7 @@ proc zip::open {path} {
        
        zip::EndOfArchive $fd cb
 
-       seek $fd $cb(coff) start
+       seek $fd [expr {$cb(coff) + $cb(base)}] start
 
        set toc(_) 0; unset toc(_); #MakeArray