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:
parent
5dd47eeac2
commit
a7393449eb
@ -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);
|
||||
}
|
||||
|
@ -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_ */
|
||||
|
@ -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};
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user