1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-27 22:50:26 +03:00

pidl: Fix segfault when accessing unicode objects.

This commit is contained in:
Jelmer Vernooij 2010-09-20 20:02:21 -07:00
parent 5dd47eeac2
commit a7393449eb
4 changed files with 11 additions and 13 deletions

View File

@ -119,12 +119,3 @@ PyObject *PyString_FromString_check_null(const char *ptr)
}
return PyString_FromString(ptr);
}
PyObject *PyUnicode_Decode_check_null(const void *ptr, size_t len,
const char *charset, const char *options)
{
if (ptr == NULL) {
Py_RETURN_NONE;
}
return PyUnicode_Decode(ptr, len, charset, options);
}

View File

@ -55,7 +55,5 @@ PyObject *py_talloc_default_repr(PyObject *py_obj);
PyObject *PyCObject_FromTallocPtr(void *);
PyObject *PyString_FromString_check_null(const char *ptr);
PyObject *PyUnicode_Decode_check_null(const void *ptr, size_t len,
const char *charset, const char *options);
#endif /* _PY_TALLOC_H_ */

View File

@ -1152,7 +1152,16 @@ sub ConvertObjectToPythonLevel($$$$$$)
if (is_charset_array($e, $l)) {
# FIXME: Use Unix charset setting rather than utf-8
$self->pidl("$py_var = PyUnicode_Decode_check_null($var_name, strlen($var_name), \"utf-8\", \"ignore\");");
$self->pidl("if ($var_name == NULL) {");
$self->indent;
$self->pidl("$py_var = Py_None;");
$self->pidl("Py_INCREF($py_var);");
$self->deindent;
$self->pidl("} else {");
$self->indent;
$self->pidl("$py_var = PyUnicode_Decode($var_name, strlen($var_name), \"utf-8\", \"ignore\");");
$self->deindent;
$self->pidl("}");
} else {
die("No SIZE_IS for array $var_name") unless (defined($l->{SIZE_IS}));
my $length = $l->{SIZE_IS};

View File

@ -21,7 +21,7 @@ class RpcTests(samba.tests.TestCase):
nblocks = samba.talloc_total_blocks(object)
if object is None:
nblocks -= self.initial_blocks
self.assertEquals(nblocks, num_expected)
#print nblocks, num_expected)
def check_type(self, interface, typename, type):
print "Checking type %s" % typename