mirror of
https://github.com/python/cpython.git
synced 2025-07-19 01:05:26 +00:00
Issue #16475 : Correctly handle the EOF when reading marshal streams.
This commit is contained in:
parent
e178187bf6
commit
6168362509
2 changed files with 14 additions and 9 deletions
|
@ -808,10 +808,16 @@ r_object(RFILE *p)
|
|||
PyObject *v, *v2;
|
||||
Py_ssize_t idx = 0;
|
||||
long i, n;
|
||||
int type = r_byte(p);
|
||||
int type, code = r_byte(p);
|
||||
int flag;
|
||||
PyObject *retval;
|
||||
|
||||
if (code == EOF) {
|
||||
PyErr_SetString(PyExc_EOFError,
|
||||
"EOF read where object expected");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
p->depth++;
|
||||
|
||||
if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
|
||||
|
@ -820,8 +826,8 @@ r_object(RFILE *p)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
flag = type & FLAG_REF;
|
||||
type = type & ~FLAG_REF;
|
||||
flag = code & FLAG_REF;
|
||||
type = code & ~FLAG_REF;
|
||||
|
||||
#define R_REF(O) do{\
|
||||
if (flag) \
|
||||
|
@ -830,12 +836,6 @@ r_object(RFILE *p)
|
|||
|
||||
switch (type) {
|
||||
|
||||
case EOF:
|
||||
PyErr_SetString(PyExc_EOFError,
|
||||
"EOF read where object expected");
|
||||
retval = NULL;
|
||||
break;
|
||||
|
||||
case TYPE_NULL:
|
||||
retval = NULL;
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue