summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2002-06-14 01:07:39 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2002-06-14 01:07:39 (GMT)
commit7fdcb411312db260e77f291b4e8a865aa61b7c6a (patch)
tree6ebdfc0e3aa5b23ee5ff43ab4dbb99a9c52119d1 /Python
parent1f68fc7fa5048e0576ff26436012765f4a8fa3d4 (diff)
downloadcpython-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.c4
-rw-r--r--Python/marshal.c20
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);
}