summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/libnet/py_net.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c
index 0567dbd6353..6aff373b359 100644
--- a/source4/libnet/py_net.c
+++ b/source4/libnet/py_net.c
@@ -155,21 +155,26 @@ static PyObject *py_net_change_password(py_net_Object *self, PyObject *args, PyO
{
union libnet_ChangePassword r;
NTSTATUS status;
- TALLOC_CTX *mem_ctx;
- struct tevent_context *ev;
+ TALLOC_CTX *mem_ctx = NULL;
+ struct tevent_context *ev = NULL;
const char *kwnames[] = { "newpassword", "oldpassword", "domain", "username", NULL };
-
+ const char *newpass = NULL;
+ const char *oldpass = NULL;
ZERO_STRUCT(r);
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|sss:change_password",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "es|esss:change_password",
discard_const_p(char *, kwnames),
- &r.generic.in.newpassword,
- &r.generic.in.oldpassword,
+ "utf8",
+ &newpass,
+ "utf8",
+ &oldpass,
&r.generic.in.domain_name,
&r.generic.in.account_name)) {
return NULL;
}
+ r.generic.in.newpassword = newpass;
+ r.generic.in.oldpassword = oldpass;
+
r.generic.level = LIBNET_CHANGE_PASSWORD_GENERIC;
if (r.generic.in.account_name == NULL) {
r.generic.in.account_name
@@ -200,12 +205,12 @@ static PyObject *py_net_change_password(py_net_Object *self, PyObject *args, PyO
r.generic.out.error_string
? r.generic.out.error_string
: nt_errstr(status));
- talloc_free(mem_ctx);
return NULL;
}
talloc_free(mem_ctx);
-
+ PyMem_Free(discard_const_p(char,newpass));
+ PyMem_Free(discard_const_p(char,oldpass));
Py_RETURN_NONE;
}