summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2012-01-30 23:55:29 (GMT)
committerGregory P. Smith <greg@krypto.org>2012-01-30 23:55:29 (GMT)
commitcc6abd56b8197bac713ea8d70ac621e78f5aadd8 (patch)
tree98746ecd433c826fcb6093687760bc05206c94c8 /Modules
parentf3b2d88b676d5624aed157a70bfa5b606f8249ed (diff)
parentab32066e65f67e14b3af4ed61333ed083446b225 (diff)
downloadcpython-cc6abd56b8197bac713ea8d70ac621e78f5aadd8.zip
cpython-cc6abd56b8197bac713ea8d70ac621e78f5aadd8.tar.gz
cpython-cc6abd56b8197bac713ea8d70ac621e78f5aadd8.tar.bz2
Fix zipimport.c's read_directory() to use appropriate types for the values
being read from the header vs the values being used by fseek and ftell (Py_ssize_t for those). Updates the Py_BuildValue format string to match (including several existing wrong 'i's that should have been 'l's).
Diffstat (limited to 'Modules')
-rw-r--r--Modules/zipimport.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index 68929ba..f822f92 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -728,14 +728,15 @@ read_directory(PyObject *archive)
PyObject *files = NULL;
FILE *fp;
unsigned short flags;
- long compress, crc, data_size, file_size, file_offset, date, time;
- long header_offset, name_size, header_size, header_position;
+ short compress, time, date, name_size;
+ long crc, data_size, file_size, header_size;
+ Py_ssize_t file_offset, header_position, header_offset;
long l, count;
Py_ssize_t i;
char name[MAXPATHLEN + 5];
PyObject *nameobj = NULL;
char *p, endof_central_dir[22];
- long arc_offset; /* offset from beginning of file to start of zip-archive */
+ Py_ssize_t arc_offset; /* Absolute offset to start of the zip-archive. */
PyObject *path;
const char *charset;
int bootstrap;
@@ -835,7 +836,7 @@ read_directory(PyObject *archive)
path = PyUnicode_FromFormat("%U%c%U", archive, SEP, nameobj);
if (path == NULL)
goto error;
- t = Py_BuildValue("Niiiiiii", path, compress, data_size,
+ t = Py_BuildValue("Nhllnhhl", path, compress, data_size,
file_size, file_offset, time, date, crc);
if (t == NULL)
goto error;