svn commit: samba r5293 - in
branches/SAMBA_4_0/source/scripting/swig: .
tpot at samba.org
tpot at samba.org
Thu Feb 10 03:19:21 GMT 2005
Author: tpot
Date: 2005-02-10 03:19:21 +0000 (Thu, 10 Feb 2005)
New Revision: 5293
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5293
Log:
Map an empty policy handle to None when creating policy handles, and
refuse to accept None as a policy handle when accepting them. Now we
don't segfault after running the samr_Shutdown() test.
Modified:
branches/SAMBA_4_0/source/scripting/swig/dcerpc.i
Changeset:
Modified: branches/SAMBA_4_0/source/scripting/swig/dcerpc.i
===================================================================
--- branches/SAMBA_4_0/source/scripting/swig/dcerpc.i 2005-02-10 03:16:33 UTC (rev 5292)
+++ branches/SAMBA_4_0/source/scripting/swig/dcerpc.i 2005-02-10 03:19:21 UTC (rev 5293)
@@ -182,14 +182,31 @@
$result = PyLong_FromLong(*$1);
}
+%typemap(in) struct policy_handle * {
+
+ if ((SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor,
+ SWIG_POINTER_EXCEPTION)) == -1)
+ return NULL;
+
+ if ($1 == NULL) {
+ PyErr_SetString(PyExc_TypeError, "None is not a valid policy handle");
+ return NULL;
+ }
+}
+
/* When returning a policy handle to Python we need to make a copy of
as the talloc context it is created under is destroyed after the
wrapper function returns. TODO: Fix memory leak created here. */
%typemap(out) struct policy_handle * {
- struct policy_handle *temp = (struct policy_handle *)malloc(sizeof(struct policy_handle));
- memcpy(temp, $1, sizeof(struct policy_handle));
- $result = SWIG_NewPointerObj(temp, SWIGTYPE_p_policy_handle, 0);
+ if ($1) {
+ struct policy_handle *temp = (struct policy_handle *)malloc(sizeof(struct policy_handle));
+ memcpy(temp, $1, sizeof(struct policy_handle));
+ $result = SWIG_NewPointerObj(temp, SWIGTYPE_p_policy_handle, 0);
+ } else {
+ Py_INCREF(Py_None);
+ $result = Py_None;
+ }
}
%{
More information about the samba-cvs
mailing list