--- Python-2.6.5\Modules\zipimport.c.bak Sun Dec 14 02:30:16 2008 +++ Python-2.6.5\Modules\zipimport.c Mon May 17 23:03:59 2010 @@ -739,15 +739,16 @@ /* Start of Central Directory */ count = 0; + fseek(fp, header_offset, 0); for (;;) { PyObject *t; int err; - fseek(fp, header_offset, 0); /* Start of file header */ + /* Start of file header */ l = PyMarshal_ReadLongFromFile(fp); if (l != 0x02014B50) break; /* Bad: Central Dir File Header */ - fseek(fp, header_offset + 10, 0); + fread(name, 6, 1, fp); /* dummy read for unused fields */ compress = PyMarshal_ReadShortFromFile(fp); time = PyMarshal_ReadShortFromFile(fp); date = PyMarshal_ReadShortFromFile(fp); @@ -755,10 +756,10 @@ data_size = PyMarshal_ReadLongFromFile(fp); file_size = PyMarshal_ReadLongFromFile(fp); name_size = PyMarshal_ReadShortFromFile(fp); - header_size = 46 + name_size + + header_size = name_size + PyMarshal_ReadShortFromFile(fp) + PyMarshal_ReadShortFromFile(fp); - fseek(fp, header_offset + 42, 0); + fread(name, 8, 1, fp); /* dummy read for unused fields */ file_offset = PyMarshal_ReadLongFromFile(fp) + arc_offset; if (name_size > MAXPATHLEN) name_size = MAXPATHLEN; @@ -771,7 +772,8 @@ p++; } *p = 0; /* Add terminating null byte */ - header_offset += header_size; + for (; i < header_size; i++) + (void)getc(fp); strncpy(path + length + 1, name, MAXPATHLEN - length - 1);