From: Björn Baumbach Date: Thu, 4 Jun 2020 14:00:04 +0000 (+0200) Subject: pyauth: add python binding for auth_session_info_set_unix() X-Git-Tag: ldb-2.2.0~175 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d72a512e0f1ce265f6bd2af01feebcfe809c9079;p=thirdparty%2Fsamba.git pyauth: add python binding for auth_session_info_set_unix() Bug: https://bugzilla.samba.org/show_bug.cgi?id=14400 Signed-off-by: Björn Baumbach Reviewed-by: Ralph Boehme --- diff --git a/source4/auth/pyauth.c b/source4/auth/pyauth.c index ed88a1751fe..ec6065d7d0a 100644 --- a/source4/auth/pyauth.c +++ b/source4/auth/pyauth.c @@ -282,6 +282,74 @@ static PyObject *py_session_info_fill_unix(PyObject *module, } +static PyObject *py_session_info_set_unix(PyObject *module, + PyObject *args, + PyObject *kwargs) +{ + NTSTATUS nt_status; + char *user_name = NULL; + int uid = -1; + int gid = -1; + struct loadparm_context *lp_ctx = NULL; + struct auth_session_info *session_info; + PyObject *py_lp_ctx = Py_None; + PyObject *py_session = Py_None; + TALLOC_CTX *frame; + + const char * const kwnames[] = { "session_info", + "user_name", + "uid", + "gid", + "lp_ctx", + NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Ozii|O", + discard_const_p(char *, kwnames), + &py_session, + &user_name, + &uid, + &gid, + &py_lp_ctx)) { + return NULL; + } + + if (!py_check_dcerpc_type(py_session, + "samba.dcerpc.auth", + "session_info")) { + return NULL; + } + session_info = pytalloc_get_type(py_session, + struct auth_session_info); + if (!session_info) { + PyErr_Format(PyExc_TypeError, + "Expected auth_session_info for session_info " + "argument got %s", + pytalloc_get_name(py_session)); + return NULL; + } + + frame = talloc_stackframe(); + + lp_ctx = lpcfg_from_py_object(frame, py_lp_ctx); + if (lp_ctx == NULL) { + TALLOC_FREE(frame); + return NULL; + } + + nt_status = auth_session_info_set_unix(lp_ctx, + user_name, + uid, + gid, + session_info); + TALLOC_FREE(frame); + if (!NT_STATUS_IS_OK(nt_status)) { + PyErr_NTSTATUS_IS_ERR_RAISE(nt_status); + } + + Py_RETURN_NONE; +} + + static const char **PyList_AsStringList(TALLOC_CTX *mem_ctx, PyObject *list, const char *paramname) { @@ -430,6 +498,10 @@ static PyMethodDef py_auth_methods[] = { PY_DISCARD_FUNC_SIG(PyCFunction,py_session_info_fill_unix), METH_VARARGS|METH_KEYWORDS, NULL }, + { "session_info_set_unix", + PY_DISCARD_FUNC_SIG(PyCFunction,py_session_info_set_unix), + METH_VARARGS|METH_KEYWORDS, + NULL }, { "copy_session_info", PY_DISCARD_FUNC_SIG(PyCFunction,py_copy_session_info), METH_VARARGS|METH_KEYWORDS,