mirror of
https://github.com/python/cpython.git
synced 2025-11-03 19:34:08 +00:00
Issue #6697: Check that _PyUnicode_AsString() result is not NULL in textio.c
The bug may occurs if locale.getpreferredencoding() returns an encoding with a surrogate (very unlikely!).
This commit is contained in:
parent
306f0100f3
commit
f6c578328c
1 changed files with 7 additions and 2 deletions
|
|
@ -905,8 +905,11 @@ textiowrapper_init(textio *self, PyObject *args, PyObject *kwds)
|
||||||
Py_CLEAR(self->encoding);
|
Py_CLEAR(self->encoding);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (self->encoding != NULL)
|
if (self->encoding != NULL) {
|
||||||
encoding = _PyUnicode_AsString(self->encoding);
|
encoding = _PyUnicode_AsString(self->encoding);
|
||||||
|
if (encoding == NULL)
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
else if (encoding != NULL) {
|
else if (encoding != NULL) {
|
||||||
self->encoding = PyUnicode_FromString(encoding);
|
self->encoding = PyUnicode_FromString(encoding);
|
||||||
if (self->encoding == NULL)
|
if (self->encoding == NULL)
|
||||||
|
|
@ -935,6 +938,8 @@ textiowrapper_init(textio *self, PyObject *args, PyObject *kwds)
|
||||||
self->writetranslate = (newline == NULL || newline[0] != '\0');
|
self->writetranslate = (newline == NULL || newline[0] != '\0');
|
||||||
if (!self->readuniversal && self->readnl) {
|
if (!self->readuniversal && self->readnl) {
|
||||||
self->writenl = _PyUnicode_AsString(self->readnl);
|
self->writenl = _PyUnicode_AsString(self->readnl);
|
||||||
|
if (self->writenl == NULL)
|
||||||
|
goto error;
|
||||||
if (!strcmp(self->writenl, "\n"))
|
if (!strcmp(self->writenl, "\n"))
|
||||||
self->writenl = NULL;
|
self->writenl = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue