summaryrefslogtreecommitdiff
path: root/source4/scripting
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2005-02-04 06:35:45 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:33 -0500
commit05db954edd562a4fa064e951051fbc31a210baba (patch)
treee6d287a3ed9612cb05e2d26124faa56e03f5126e /source4/scripting
parentaa747a5712c9c55b2862c5c0eb35f04ed37e2be4 (diff)
downloadsamba-05db954edd562a4fa064e951051fbc31a210baba.tar.gz
samba-05db954edd562a4fa064e951051fbc31a210baba.tar.bz2
samba-05db954edd562a4fa064e951051fbc31a210baba.zip
r5224: Add in/out typemaps for resume handles. This saves us having to much
around with pointers to just one uint32. Add an output typemap to copy a policy handle as the talloc context is destroyed before the wrapper function returns. More work here needed to avoid memory leaks. Use the swig carrays.i file to create accessor and setter functions for fixed width integer types. Also add functions for struct samr_SamEntry as it's returned by the LookupDomain RPC. This really needs to be done by pidl so I don't have to go through and find all the structures that are returned in arrays. Include security.i to give us SIDs and security descriptors. (This used to be commit 5a1f6c999ef5e84e93ec8f07b9751d795c4566a5)
Diffstat (limited to 'source4/scripting')
-rw-r--r--source4/scripting/swig/dcerpc.i39
1 files changed, 39 insertions, 0 deletions
diff --git a/source4/scripting/swig/dcerpc.i b/source4/scripting/swig/dcerpc.i
index 52cd833508..53aaf29b1f 100644
--- a/source4/scripting/swig/dcerpc.i
+++ b/source4/scripting/swig/dcerpc.i
@@ -169,10 +169,49 @@ NTSTATUS dcerpc_pipe_connect(struct dcerpc_pipe **OUT,
const char *dcerpc_server_name(struct dcerpc_pipe *p);
+/* Some typemaps for easier access to resume handles. Really this can
+ also be done using the uint32 carray functions, but it's a bit of a
+ hassle. TODO: Fix memory leak here. */
+
+%typemap(in) uint32_t *resume_handle {
+ $1 = malloc(sizeof(*$1));
+ *$1 = PyLong_AsLong($input);
+}
+
+%typemap(out) uint32_t *resume_handle {
+ $result = PyLong_FromLong(*$1);
+}
+
+/* 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);
+}
+
%{
#include "librpc/gen_ndr/ndr_misc.h"
+#include "librpc/gen_ndr/ndr_security.h"
#include "librpc/gen_ndr/ndr_samr.h"
%}
+%include "carrays.i"
+
+/* Some functions for accessing arrays of fixed-width integers. */
+
+%array_functions(uint8_t, uint8_array);
+%array_functions(uint16_t, uint16_array);
+%array_functions(uint32_t, uint32_array);
+
+/* Functions for handling arrays of structures. It would be nice for
+ pidl to automatically generating these instead of having to find
+ them all by hand. */
+
+%array_functions(struct samr_SamEntry, samr_SamEntry_array);
+
%include "librpc/gen_ndr/misc.i"
+%include "librpc/gen_ndr/security.i"
%include "librpc/gen_ndr/samr.i"