Commit 13bf8118 authored by Jeremy Allison's avatar Jeremy Allison Committed by Karolin Seeger

s3: smbd: filenames - ensure we replace the missing '/' if we error in an intermediate POSIX path.

Previous regression test ensures we still return the correct
error code for POSIX pathname operations.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13803Signed-off-by: default avatarJeremy Allison <jra@samba.org>
Reviewed-by: default avatarVolker Lendecke <vl@samba.org>

Autobuild-User(master): Volker Lendecke <vl@samba.org>
Autobuild-Date(master): Mon Feb 25 09:33:27 CET 2019 on sn-devel-144

(cherry picked from commit 3f1a13a9)
parent ffb706dd
......@@ -9,7 +9,6 @@
^samba3.smbtorture_s3.crypt_server\(nt4_dc\).SMB2-SESSION-REAUTH # expected to give ACCESS_DENIED SMB2.1 doesn't have encryption
^samba3.smbtorture_s3.crypt_server\(nt4_dc\).SMB2-SESSION-RECONNECT # expected to give CONNECTION_DISCONNECTED, we need to fix the test
^samba3.smbtorture_s3.*ad_dc_ntvfs.*SMB2-DIR-FSYNC.*
^samba3.smbtorture_s3.*.POSIX-MKDIR
^samba3.smb2.session enc.reconnect # expected to give CONNECTION_DISCONNECTED, we need to fix the test
^samba3.raw.session enc # expected to give ACCESS_DENIED as SMB1 encryption isn't used
^samba3.smbtorture_s3.crypt_server # expected to give ACCESS_DENIED as SMB1 encryption isn't used
......
......@@ -917,6 +917,24 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
*
* BUG: https://bugzilla.samba.org/show_bug.cgi?id=13803
*/
if (end != NULL) {
const char *morepath = NULL;
/*
* If this is intermediate we must
* restore the full path.
*/
*end = '/';
/*
* If there are any more components
* after the failed LSTAT we cannot
* continue.
*/
morepath = strchr(end + 1, '/');
if (morepath != NULL) {
status = NT_STATUS_OBJECT_PATH_NOT_FOUND;
goto fail;
}
}
if (errno == ENOENT) {
/* New file or directory. */
goto done;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment