fsp->file_id = vfs_file_id_from_sbuf(conn, &smb_fname->st);
fsp->vuid = UID_FIELD_INVALID;
fsp->file_pid = 0;
- fsp->can_lock = True;
- fsp->can_read = True;
- fsp->can_write = True;
+ fsp->fsp_flags.can_lock = true;
+ fsp->fsp_flags.can_read = true;
+ fsp->fsp_flags.can_write = true;
fsp->print_file = NULL;
- fsp->modified = False;
+ fsp->fsp_flags.modified = false;
fsp->sent_oplock_break = NO_BREAK_SENT;
- fsp->is_directory = S_ISDIR(smb_fname->st.st_ex_mode);
+ fsp->fsp_flags.is_directory = S_ISDIR(smb_fname->st.st_ex_mode);
*_fsp = fsp;
fname,
NULL,
NULL,
+ 0,
lp_posix_pathnames() ?
SMB_FILENAME_POSIX_PATH : 0);
return NT_STATUS_NO_MEMORY;
}
- status = SMB_VFS_GET_NT_ACL(conn,
+ status = SMB_VFS_GET_NT_ACL_AT(conn,
+ conn->cwd_fsp,
smb_fname,
security_info_wanted,
mem_ctx,
sd);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0,("get_nt_acl_conn: get_nt_acl returned %s.\n", nt_errstr(status)));
+ DBG_ERR("get_nt_acl_at returned %s.\n",
+ nt_errstr(status));
}
TALLOC_FREE(frame);
const char * const kwnames[] = {
"fname",
"mode",
+ "session_info",
"gid",
"service",
NULL
};
char *fname, *service = NULL;
+ PyObject *py_session = Py_None;
+ struct auth_session_info *session_info = NULL;
int ret;
int mode, gid = -1;
SMB_ACL_T acl;
TALLOC_CTX *frame;
connection_struct *conn;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "si|iz",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO|iz",
discard_const_p(char *, kwnames),
&fname,
&mode,
+ &py_session,
&gid,
&service))
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 == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ return NULL;
+ }
+
frame = talloc_stackframe();
acl = make_simple_acl(frame, gid, mode);
return NULL;
}
- conn = get_conn_tos(service, NULL);
+ conn = get_conn_tos(service, session_info);
if (!conn) {
TALLOC_FREE(frame);
return NULL;
"fname",
"uid",
"gid",
+ "session_info",
"service",
NULL
};
int ret;
NTSTATUS status;
char *fname, *service = NULL;
+ PyObject *py_session = Py_None;
+ struct auth_session_info *session_info = NULL;
int uid, gid;
TALLOC_CTX *frame;
struct files_struct *fsp = NULL;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sii|z",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siiO|z",
discard_const_p(char *, kwnames),
&fname,
&uid,
&gid,
+ &py_session,
&service))
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 == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ return NULL;
+ }
+
frame = talloc_stackframe();
- conn = get_conn_tos(service, NULL);
+ conn = get_conn_tos(service, session_info);
if (!conn) {
TALLOC_FREE(frame);
return NULL;
{
const char * const kwnames[] = {
"fname",
+ "session_info",
"service",
NULL
};
connection_struct *conn;
int ret;
struct smb_filename *smb_fname = NULL;
+ PyObject *py_session = Py_None;
+ struct auth_session_info *session_info = NULL;
char *fname, *service = NULL;
TALLOC_CTX *frame;
frame = talloc_stackframe();
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|z",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|z",
discard_const_p(char *, kwnames),
&fname,
+ &py_session ,
&service)) {
TALLOC_FREE(frame);
return NULL;
}
- conn = get_conn_tos(service, NULL);
+ if (!py_check_dcerpc_type(py_session,
+ "samba.dcerpc.auth",
+ "session_info")) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ session_info = pytalloc_get_type(py_session,
+ struct auth_session_info);
+ if (session_info == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+
+ conn = get_conn_tos(service, session_info);
if (!conn) {
TALLOC_FREE(frame);
return NULL;
"fname",
"security_info_sent",
"sd",
- "service",
"session_info",
+ "service",
NULL
};
frame = talloc_stackframe();
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO|zO",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siOO|z",
discard_const_p(char *, kwnames),
&fname,
&security_info_sent,
&py_sd,
- &service,
- &py_session)) {
+ &py_session,
+ &service)) {
TALLOC_FREE(frame);
return NULL;
}
return NULL;
}
- if (py_session != Py_None) {
- if (!py_check_dcerpc_type(py_session,
- "samba.dcerpc.auth",
- "session_info")) {
- TALLOC_FREE(frame);
- 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;
- }
+ if (!py_check_dcerpc_type(py_session,
+ "samba.dcerpc.auth",
+ "session_info")) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ session_info = pytalloc_get_type(py_session,
+ struct auth_session_info);
+ if (session_info == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ return NULL;
}
conn = get_conn_tos(service, session_info);
*/
static PyObject *py_smbd_get_nt_acl(PyObject *self, PyObject *args, PyObject *kwargs)
{
- const char * const kwnames[] = { "fname",
- "security_info_wanted",
- "service",
- "session_info",
- NULL };
+ const char * const kwnames[] = {
+ "fname",
+ "security_info_wanted",
+ "session_info",
+ "service",
+ NULL
+ };
char *fname, *service = NULL;
int security_info_wanted;
PyObject *py_sd;
ret = PyArg_ParseTupleAndKeywords(args,
kwargs,
- "si|zO",
+ "siO|z",
discard_const_p(char *, kwnames),
&fname,
&security_info_wanted,
- &service,
- &py_session);
+ &py_session,
+ &service);
if (!ret) {
TALLOC_FREE(frame);
return NULL;
}
- if (py_session != Py_None) {
- if (!py_check_dcerpc_type(py_session,
- "samba.dcerpc.auth",
- "session_info")) {
- TALLOC_FREE(frame);
- 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;
- }
+ if (!py_check_dcerpc_type(py_session,
+ "samba.dcerpc.auth",
+ "session_info")) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ session_info = pytalloc_get_type(py_session,
+ struct auth_session_info);
+ if (session_info == NULL) {
+ PyErr_Format(
+ PyExc_TypeError,
+ "Expected auth_session_info for "
+ "session_info argument got %s",
+ pytalloc_get_name(py_session));
+ return NULL;
}
conn = get_conn_tos(service, session_info);
*/
static PyObject *py_smbd_set_sys_acl(PyObject *self, PyObject *args, PyObject *kwargs)
{
- const char * const kwnames[] = { "fname", "acl_type", "acl", "service", NULL };
+ const char * const kwnames[] = {
+ "fname",
+ "acl_type",
+ "acl",
+ "session_info",
+ "service",
+ NULL
+ };
TALLOC_CTX *frame = talloc_stackframe();
int ret;
char *fname, *service = NULL;
PyObject *py_acl;
+ PyObject *py_session = Py_None;
+ struct auth_session_info *session_info = NULL;
struct smb_acl_t *acl;
int acl_type;
connection_struct *conn;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO|z",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siOO|z",
discard_const_p(char *, kwnames),
- &fname, &acl_type, &py_acl, &service)) {
+ &fname,
+ &acl_type,
+ &py_acl,
+ &py_session,
+ &service)) {
TALLOC_FREE(frame);
return NULL;
}
return NULL;
}
- conn = get_conn_tos(service, NULL);
+ if (!py_check_dcerpc_type(py_session,
+ "samba.dcerpc.auth",
+ "session_info")) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ session_info = pytalloc_get_type(py_session,
+ struct auth_session_info);
+ if (session_info == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+
+ conn = get_conn_tos(service, session_info);
if (!conn) {
TALLOC_FREE(frame);
return NULL;
*/
static PyObject *py_smbd_get_sys_acl(PyObject *self, PyObject *args, PyObject *kwargs)
{
- const char * const kwnames[] = { "fname", "acl_type", "service", NULL };
+ const char * const kwnames[] = {
+ "fname",
+ "acl_type",
+ "session_info",
+ "service",
+ NULL
+ };
char *fname;
PyObject *py_acl;
+ PyObject *py_session = Py_None;
+ struct auth_session_info *session_info = NULL;
struct smb_acl_t *acl;
int acl_type;
TALLOC_CTX *frame = talloc_stackframe();
char *service = NULL;
struct smb_filename *smb_fname = NULL;
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "si|z",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO|z",
discard_const_p(char *, kwnames),
- &fname, &acl_type, &service)) {
+ &fname,
+ &acl_type,
+ &py_session,
+ &service)) {
TALLOC_FREE(frame);
return NULL;
}
- conn = get_conn_tos(service, NULL);
+ if (!py_check_dcerpc_type(py_session,
+ "samba.dcerpc.auth",
+ "session_info")) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ session_info = pytalloc_get_type(py_session,
+ struct auth_session_info);
+ if (session_info == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+
+ conn = get_conn_tos(service, session_info);
if (!conn) {
TALLOC_FREE(frame);
return NULL;
static PyObject *py_smbd_mkdir(PyObject *self, PyObject *args, PyObject *kwargs)
{
- const char * const kwnames[] = { "fname", "service", NULL };
+ const char * const kwnames[] = {
+ "fname",
+ "session_info",
+ "service",
+ NULL
+ };
char *fname, *service = NULL;
+ PyObject *py_session = Py_None;
+ struct auth_session_info *session_info = NULL;
TALLOC_CTX *frame = talloc_stackframe();
struct connection_struct *conn = NULL;
struct smb_filename *smb_fname = NULL;
if (!PyArg_ParseTupleAndKeywords(args,
kwargs,
- "s|z",
+ "sO|z",
discard_const_p(char *,
kwnames),
&fname,
+ &py_session,
&service)) {
TALLOC_FREE(frame);
return NULL;
}
- conn = get_conn_tos(service, NULL);
+ if (!py_check_dcerpc_type(py_session,
+ "samba.dcerpc.auth",
+ "session_info")) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ session_info = pytalloc_get_type(py_session,
+ struct auth_session_info);
+ if (session_info == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+
+ conn = get_conn_tos(service, session_info);
if (!conn) {
TALLOC_FREE(frame);
return NULL;
fname,
NULL,
NULL,
+ 0,
lp_posix_pathnames() ?
SMB_FILENAME_POSIX_PATH : 0);
*/
static PyObject *py_smbd_create_file(PyObject *self, PyObject *args, PyObject *kwargs)
{
- const char * const kwnames[] = { "fname", "service", NULL };
+ const char * const kwnames[] = {
+ "fname",
+ "session_info",
+ "service",
+ NULL
+ };
char *fname, *service = NULL;
+ PyObject *py_session = Py_None;
+ struct auth_session_info *session_info = NULL;
TALLOC_CTX *frame = talloc_stackframe();
struct connection_struct *conn = NULL;
struct files_struct *fsp = NULL;
if (!PyArg_ParseTupleAndKeywords(args,
kwargs,
- "s|z",
+ "sO|z",
discard_const_p(char *,
kwnames),
&fname,
+ &py_session,
&service)) {
TALLOC_FREE(frame);
return NULL;
}
- conn = get_conn_tos(service, NULL);
+ if (!py_check_dcerpc_type(py_session,
+ "samba.dcerpc.auth",
+ "session_info")) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ session_info = pytalloc_get_type(py_session,
+ struct auth_session_info);
+ if (session_info == NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Expected auth_session_info for session_info argument got %s",
+ pytalloc_get_name(py_session));
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+
+ conn = get_conn_tos(service, session_info);
if (!conn) {
TALLOC_FREE(frame);
return NULL;
PY_DISCARD_FUNC_SIG(PyCFunction, py_smbd_create_file),
METH_VARARGS|METH_KEYWORDS,
NULL },
- { NULL }
+ {0}
};
void initsmbd(void);