From: Ralph Boehme Date: Mon, 25 Jan 2021 14:46:04 +0000 (+0100) Subject: smbd: use parent_pathref() in smb_unix_mknod() X-Git-Tag: tevent-0.11.0~1910 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65c90e623181be25b18e2c54032fc001f4dd7097;p=thirdparty%2Fsamba.git smbd: use parent_pathref() in smb_unix_mknod() Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index f3a0d7da75f..36a18edd1e0 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -8142,7 +8142,6 @@ static NTSTATUS smb_unix_mknod(connection_struct *conn, int ret; struct smb_filename *parent_fname = NULL; struct smb_filename *base_name = NULL; - bool ok; if (total_data < 100) { return NT_STATUS_INVALID_PARAMETER; @@ -8199,25 +8198,12 @@ static NTSTATUS smb_unix_mknod(connection_struct *conn, "%.0f mode 0%o for file %s\n", (double)dev, (unsigned int)unixmode, smb_fname_str_dbg(smb_fname))); - ok = parent_smb_fname(talloc_tos(), - smb_fname, - &parent_fname, - &base_name); - if (!ok) { - return NT_STATUS_NO_MEMORY; - } - - ret = vfs_stat(conn, parent_fname); - if (ret == -1) { - TALLOC_FREE(parent_fname); - return map_nt_error_from_unix(errno); - } - status = openat_pathref_fsp(conn->cwd_fsp, parent_fname); - if (NT_STATUS_EQUAL(status, NT_STATUS_STOPPED_ON_SYMLINK)) { - status = NT_STATUS_OBJECT_NAME_NOT_FOUND; - } + status = parent_pathref(talloc_tos(), + conn->cwd_fsp, + smb_fname, + &parent_fname, + &base_name); if (!NT_STATUS_IS_OK(status)) { - TALLOC_FREE(parent_fname); return status; }