r2966: Handle conversion of DATA_BLOB fields from Python in a slightly nicer
[bbaumbach/samba-autobuild/.git] / source / scripting / swig / dcerpc.i
index 606f236f35089c62db91964142277a29578d3167..918445d7e36d543ce22beeaebaa47b51b3e6aa22 100644 (file)
@@ -254,28 +254,28 @@ PyObject *string_ptr_to_python(TALLOC_CTX *mem_ctx, char *obj)
 #define dom_sid2_ptr_to_python dom_sid_ptr_to_python
 #define dom_sid2_ptr_from_python dom_sid_ptr_from_python
 
-DATA_BLOB DATA_BLOB_from_python(PyObject *obj, char *name)
+void DATA_BLOB_ptr_from_python(TALLOC_CTX *mem_ctx, DATA_BLOB **s, 
+                              PyObject *obj, char *name)
 {
-       DATA_BLOB ret;
-
-       /* Because we treat DATA_BLOB as a scalar type (why?) there 
-          doesn't seem to be a way to pass back when an error has
-          occured. */
-
        if (obj == NULL) {
                PyErr_Format(PyExc_ValueError, "Expecting key %s", name);
                return;
        }
 
+       if (obj == Py_None) {
+               *s = NULL;
+               return;
+       }
+
        if (!PyString_Check(obj)) {
                PyErr_Format(PyExc_TypeError, "Expecting string value for key '%s'", name);
                return;
        }
 
-       ret.length = PyString_Size(obj);
-       ret.data = PyString_AsString(obj);
+       *s = talloc(mem_ctx, sizeof(DATA_BLOB));
 
-       return ret;
+       (*s)->length = PyString_Size(obj);
+       (*s)->data = PyString_AsString(obj);
 }
 
 PyObject *DATA_BLOB_to_python(DATA_BLOB obj)