From: Ralph Boehme Date: Fri, 22 Jan 2021 13:54:18 +0000 (+0100) Subject: smbd: use real dirfsp for SMB_VFS_UNLINKAT() in py_smbd_unlink() X-Git-Url: http://git.samba.org/samba.git/?a=commitdiff_plain;h=0f3db9b6b5cb86039f51b110104f6fe9f41ad874;p=bbaumbach%2Fsamba-autobuild%2F.git smbd: use real dirfsp for SMB_VFS_UNLINKAT() in py_smbd_unlink() Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysmbd.c index fdc8cd7e022..c78aefd32f7 100644 --- a/source3/smbd/pysmbd.c +++ b/source3/smbd/pysmbd.c @@ -648,10 +648,13 @@ static PyObject *py_smbd_unlink(PyObject *self, PyObject *args, PyObject *kwargs connection_struct *conn; int ret; struct smb_filename *smb_fname = NULL; + struct smb_filename *parent_fname = NULL; + struct smb_filename *at_fname = NULL; PyObject *py_session = Py_None; struct auth_session_info *session_info = NULL; char *fname, *service = NULL; TALLOC_CTX *frame; + NTSTATUS status; frame = talloc_stackframe(); @@ -694,9 +697,19 @@ static PyObject *py_smbd_unlink(PyObject *self, PyObject *args, PyObject *kwargs return PyErr_NoMemory(); } + status = parent_pathref(frame, + conn->cwd_fsp, + smb_fname, + &parent_fname, + &at_fname); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return PyErr_NoMemory(); + } + ret = SMB_VFS_UNLINKAT(conn, - conn->cwd_fsp, - smb_fname, + parent_fname->fsp, + at_fname, 0); if (ret != 0) { TALLOC_FREE(frame);