mirror of
https://github.com/python/cpython.git
synced 2025-08-02 08:02:56 +00:00
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).
This commit is contained in:
commit
cc6abd56b8
1 changed files with 5 additions and 4 deletions
|
@ -728,14 +728,15 @@ read_directory(PyObject *archive)
|
||||||
PyObject *files = NULL;
|
PyObject *files = NULL;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
unsigned short flags;
|
unsigned short flags;
|
||||||
long compress, crc, data_size, file_size, file_offset, date, time;
|
short compress, time, date, name_size;
|
||||||
long header_offset, name_size, header_size, header_position;
|
long crc, data_size, file_size, header_size;
|
||||||
|
Py_ssize_t file_offset, header_position, header_offset;
|
||||||
long l, count;
|
long l, count;
|
||||||
Py_ssize_t i;
|
Py_ssize_t i;
|
||||||
char name[MAXPATHLEN + 5];
|
char name[MAXPATHLEN + 5];
|
||||||
PyObject *nameobj = NULL;
|
PyObject *nameobj = NULL;
|
||||||
char *p, endof_central_dir[22];
|
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;
|
PyObject *path;
|
||||||
const char *charset;
|
const char *charset;
|
||||||
int bootstrap;
|
int bootstrap;
|
||||||
|
@ -835,7 +836,7 @@ read_directory(PyObject *archive)
|
||||||
path = PyUnicode_FromFormat("%U%c%U", archive, SEP, nameobj);
|
path = PyUnicode_FromFormat("%U%c%U", archive, SEP, nameobj);
|
||||||
if (path == NULL)
|
if (path == NULL)
|
||||||
goto error;
|
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);
|
file_size, file_offset, time, date, crc);
|
||||||
if (t == NULL)
|
if (t == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue