diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2002-06-14 01:07:39 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2002-06-14 01:07:39 (GMT) |
commit | 7fdcb411312db260e77f291b4e8a865aa61b7c6a (patch) | |
tree | 6ebdfc0e3aa5b23ee5ff43ab4dbb99a9c52119d1 /Python | |
parent | 1f68fc7fa5048e0576ff26436012765f4a8fa3d4 (diff) | |
download | cpython-7fdcb411312db260e77f291b4e8a865aa61b7c6a.zip cpython-7fdcb411312db260e77f291b4e8a865aa61b7c6a.tar.gz cpython-7fdcb411312db260e77f291b4e8a865aa61b7c6a.tar.bz2 |
Fix SF bug # 561858 Assertion with very long lists
Write 4 bytes for co_stacksize, etc. to prevent writing out
bad .pyc files which can cause a crash when read back in.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/import.c | 4 | ||||
-rw-r--r-- | Python/marshal.c | 20 |
2 files changed, 12 insertions, 12 deletions
diff --git a/Python/import.c b/Python/import.c index e3efffe..dabb753 100644 --- a/Python/import.c +++ b/Python/import.c @@ -59,9 +59,9 @@ extern time_t PyOS_GetLastModificationTime(char *, FILE *); Python 2.1.1: 60202 Python 2.1.2: 60202 Python 2.2: 60717 - Python 2.3a0: 62001 + Python 2.3a0: 62011 */ -#define MAGIC (62001 | ((long)'\r'<<16) | ((long)'\n'<<24)) +#define MAGIC (62011 | ((long)'\r'<<16) | ((long)'\n'<<24)) /* Magic word as global; note that _PyImport_Init() can change the value of this global to accommodate for alterations of how the diff --git a/Python/marshal.c b/Python/marshal.c index ab26f51..0df46cf 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -241,10 +241,10 @@ w_object(PyObject *v, WFILE *p) else if (PyCode_Check(v)) { PyCodeObject *co = (PyCodeObject *)v; w_byte(TYPE_CODE, p); - w_short(co->co_argcount, p); - w_short(co->co_nlocals, p); - w_short(co->co_stacksize, p); - w_short(co->co_flags, p); + w_long(co->co_argcount, p); + w_long(co->co_nlocals, p); + w_long(co->co_stacksize, p); + w_long(co->co_flags, p); w_object(co->co_code, p); w_object(co->co_consts, p); w_object(co->co_names, p); @@ -253,7 +253,7 @@ w_object(PyObject *v, WFILE *p) w_object(co->co_cellvars, p); w_object(co->co_filename, p); w_object(co->co_name, p); - w_short(co->co_firstlineno, p); + w_long(co->co_firstlineno, p); w_object(co->co_lnotab, p); } else if (PyObject_CheckReadBuffer(v)) { @@ -588,10 +588,10 @@ r_object(RFILE *p) return NULL; } else { - int argcount = r_short(p); - int nlocals = r_short(p); - int stacksize = r_short(p); - int flags = r_short(p); + int argcount = r_long(p); + int nlocals = r_long(p); + int stacksize = r_long(p); + int flags = r_long(p); PyObject *code = NULL; PyObject *consts = NULL; PyObject *names = NULL; @@ -612,7 +612,7 @@ r_object(RFILE *p) if (cellvars) filename = r_object(p); if (filename) name = r_object(p); if (name) { - firstlineno = r_short(p); + firstlineno = r_long(p); lnotab = r_object(p); } |