summaryrefslogtreecommitdiff
path: root/Modules
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-07-19 12:39:10 +0000
committerGeorg Brandl <georg@python.org>2008-07-19 12:39:10 +0000
commit27b2b9dcead5933598c8808c95e631db975498cd (patch)
tree207697940d58569f6fed200149e39a5138f59fc3 /Modules
parenta108192931ef94a9604f92cb241ab3022acd3189 (diff)
downloadcpython-27b2b9dcead5933598c8808c95e631db975498cd.tar.gz
#3302: fix segfaults when passing None for arguments that can't
be NULL for the C functions.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_localemodule.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 09e04efc91..09c025fe96 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -586,7 +586,7 @@ static PyObject*
PyIntl_gettext(PyObject* self, PyObject *args)
{
char *in;
- if (!PyArg_ParseTuple(args, "z", &in))
+ if (!PyArg_ParseTuple(args, "s", &in))
return 0;
return PyString_FromString(gettext(in));
}
@@ -599,7 +599,7 @@ static PyObject*
PyIntl_dgettext(PyObject* self, PyObject *args)
{
char *domain, *in;
- if (!PyArg_ParseTuple(args, "zz", &domain, &in))
+ if (!PyArg_ParseTuple(args, "zs", &domain, &in))
return 0;
return PyString_FromString(dgettext(domain, in));
}
@@ -613,7 +613,7 @@ PyIntl_dcgettext(PyObject *self, PyObject *args)
{
char *domain, *msgid;
int category;
- if (!PyArg_ParseTuple(args, "zzi", &domain, &msgid, &category))
+ if (!PyArg_ParseTuple(args, "zsi", &domain, &msgid, &category))
return 0;
return PyString_FromString(dcgettext(domain,msgid,category));
}
@@ -643,9 +643,13 @@ PyDoc_STRVAR(bindtextdomain__doc__,
static PyObject*
PyIntl_bindtextdomain(PyObject* self,PyObject*args)
{
- char *domain,*dirname;
- if (!PyArg_ParseTuple(args, "zz", &domain, &dirname))
+ char *domain, *dirname;
+ if (!PyArg_ParseTuple(args, "sz", &domain, &dirname))
return 0;
+ if (!strlen(domain)) {
+ PyErr_SetString(Error, "domain must be a non-empty string");
+ return 0;
+ }
dirname = bindtextdomain(domain, dirname);
if (!dirname) {
PyErr_SetFromErrno(PyExc_OSError);