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