mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
#3302: fix segfaults when passing None for arguments that can't
be NULL for the C functions.
This commit is contained in:
parent
1ad108db05
commit
6b41a8e156
2 changed files with 12 additions and 5 deletions
|
@ -67,6 +67,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #3302: Fix several crashes when calling locale's gettext functions
|
||||||
|
with None arguments.
|
||||||
|
|
||||||
- Issue #3389: Allow resolving dotted names for handlers in logging
|
- Issue #3389: Allow resolving dotted names for handlers in logging
|
||||||
configuration files.
|
configuration files.
|
||||||
|
|
||||||
|
|
|
@ -586,7 +586,7 @@ static PyObject*
|
||||||
PyIntl_gettext(PyObject* self, PyObject *args)
|
PyIntl_gettext(PyObject* self, PyObject *args)
|
||||||
{
|
{
|
||||||
char *in;
|
char *in;
|
||||||
if (!PyArg_ParseTuple(args, "z", &in))
|
if (!PyArg_ParseTuple(args, "s", &in))
|
||||||
return 0;
|
return 0;
|
||||||
return PyString_FromString(gettext(in));
|
return PyString_FromString(gettext(in));
|
||||||
}
|
}
|
||||||
|
@ -599,7 +599,7 @@ static PyObject*
|
||||||
PyIntl_dgettext(PyObject* self, PyObject *args)
|
PyIntl_dgettext(PyObject* self, PyObject *args)
|
||||||
{
|
{
|
||||||
char *domain, *in;
|
char *domain, *in;
|
||||||
if (!PyArg_ParseTuple(args, "zz", &domain, &in))
|
if (!PyArg_ParseTuple(args, "zs", &domain, &in))
|
||||||
return 0;
|
return 0;
|
||||||
return PyString_FromString(dgettext(domain, in));
|
return PyString_FromString(dgettext(domain, in));
|
||||||
}
|
}
|
||||||
|
@ -613,7 +613,7 @@ PyIntl_dcgettext(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
char *domain, *msgid;
|
char *domain, *msgid;
|
||||||
int category;
|
int category;
|
||||||
if (!PyArg_ParseTuple(args, "zzi", &domain, &msgid, &category))
|
if (!PyArg_ParseTuple(args, "zsi", &domain, &msgid, &category))
|
||||||
return 0;
|
return 0;
|
||||||
return PyString_FromString(dcgettext(domain,msgid,category));
|
return PyString_FromString(dcgettext(domain,msgid,category));
|
||||||
}
|
}
|
||||||
|
@ -644,8 +644,12 @@ static PyObject*
|
||||||
PyIntl_bindtextdomain(PyObject* self,PyObject*args)
|
PyIntl_bindtextdomain(PyObject* self,PyObject*args)
|
||||||
{
|
{
|
||||||
char *domain, *dirname;
|
char *domain, *dirname;
|
||||||
if (!PyArg_ParseTuple(args, "zz", &domain, &dirname))
|
if (!PyArg_ParseTuple(args, "sz", &domain, &dirname))
|
||||||
return 0;
|
return 0;
|
||||||
|
if (!strlen(domain)) {
|
||||||
|
PyErr_SetString(Error, "domain must be a non-empty string");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
dirname = bindtextdomain(domain, dirname);
|
dirname = bindtextdomain(domain, dirname);
|
||||||
if (!dirname) {
|
if (!dirname) {
|
||||||
PyErr_SetFromErrno(PyExc_OSError);
|
PyErr_SetFromErrno(PyExc_OSError);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue