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",
+ "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);
{
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);