TALLOC_CTX *frame = talloc_stackframe();
struct connection_struct *conn = NULL;
struct smb_filename *smb_fname = NULL;
+ struct smb_filename *parent_fname = NULL;
+ struct smb_filename *base_name = NULL;
+ NTSTATUS status;
int ret;
mode_t saved_umask;
+ bool ok;
if (!PyArg_ParseTupleAndKeywords(args,
kwargs,
return NULL;
}
+ ok = parent_smb_fname(frame,
+ smb_fname,
+ &parent_fname,
+ &base_name);
+ if (!ok) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+
+ ret = vfs_stat(conn, parent_fname);
+ if (ret == -1) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+ status = openat_pathref_fsp(conn->cwd_fsp, parent_fname);
+ if (!NT_STATUS_IS_OK(status)) {
+ TALLOC_FREE(frame);
+ return NULL;
+ }
+
/* we want total control over the permissions on created files,
so set our umask to 0 */
saved_umask = umask(0);
ret = SMB_VFS_MKDIRAT(conn,
- conn->cwd_fsp,
- smb_fname,
+ parent_fname->fsp,
+ base_name,
00755);
umask(saved_umask);