The Samba-Bugzilla – Attachment 15337 Details for
Bug 13718
Does smbd send error like STATUS_FILE_CORRUPT_ERROR on directory scanning error?
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
0001-readdir-can-return-NT_STATUS_FILE_CORRUPT_ERROR.patch
0001-readdir-can-return-NT_STATUS_FILE_CORRUPT_ERROR.patch (text/plain), 2.74 KB, created by
kenjiuno
on 2019-07-30 07:04:37 UTC
(
hide
)
Description:
0001-readdir-can-return-NT_STATUS_FILE_CORRUPT_ERROR.patch
Filename:
MIME Type:
Creator:
kenjiuno
Created:
2019-07-30 07:04:37 UTC
Size:
2.74 KB
patch
obsolete
>From adf6ce30db9271c070ad49b27823d693e4a54d7f Mon Sep 17 00:00:00 2001 >From: KU <ku@digitaldolphins.jp> >Date: Tue, 30 Jul 2019 16:01:06 +0900 >Subject: [PATCH] readdir can return NT_STATUS_FILE_CORRUPT_ERROR. > >--- > source3/modules/vfs_default.c | 1 + > source3/smbd/dir.c | 4 +++- > source3/smbd/reply.c | 4 ++++ > source3/smbd/smb2_query_directory.c | 3 +++ > source3/smbd/trans2.c | 3 +++ > 5 files changed, 14 insertions(+), 1 deletion(-) > >diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c >index 84c22bb1517..16dfa36e617 100644 >--- a/source3/modules/vfs_default.c >+++ b/source3/modules/vfs_default.c >@@ -426,6 +426,7 @@ static struct dirent *vfswrap_readdir(vfs_handle_struct *handle, > { > struct dirent *result; > >+ errno = 0; > START_PROFILE(syscall_readdir); > result = readdir(dirp); > END_PROFILE(syscall_readdir); >diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c >index 2c59cb898ec..ff94a90152d 100644 >--- a/source3/smbd/dir.c >+++ b/source3/smbd/dir.c >@@ -1769,7 +1769,9 @@ const char *ReadDirName(struct smb_Dir *dirp, long *poffset, > dirp->file_number++; > return n; > } >- *poffset = dirp->offset = END_OF_DIRECTORY_OFFSET; >+ if (errno == 0) { >+ *poffset = dirp->offset = END_OF_DIRECTORY_OFFSET; >+ } > *ptalloced = NULL; > return NULL; > } >diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c >index 2622681a2da..cd2f956a692 100644 >--- a/source3/smbd/reply.c >+++ b/source3/smbd/reply.c >@@ -1968,6 +1968,10 @@ void reply_search(struct smb_request *req) > &date, > check_descend, > ask_sharemode); >+ if (errno == EIO) { >+ reply_nterror(req, NT_STATUS_FILE_CORRUPT_ERROR); >+ goto out; >+ } > if (!finished) { > char buf[DIR_STRUCT_SIZE]; > memcpy(buf,status,21); >diff --git a/source3/smbd/smb2_query_directory.c b/source3/smbd/smb2_query_directory.c >index d433f2bee42..c6945f4defa 100644 >--- a/source3/smbd/smb2_query_directory.c >+++ b/source3/smbd/smb2_query_directory.c >@@ -608,6 +608,9 @@ static bool smb2_query_directory_next_entry(struct tevent_req *req) > * entry. > */ > return false; >+ } else if (NT_STATUS_EQUAL(status, NT_STATUS_FILE_CORRUPT_ERROR)) { >+ tevent_req_nterror(req, NT_STATUS_FILE_CORRUPT_ERROR); >+ return true; > } else if (state->num > 0) { > goto last_entry_done; > } else if (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) { >diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c >index 5b99240e9e8..a78a3bb248e 100644 >--- a/source3/smbd/trans2.c >+++ b/source3/smbd/trans2.c >@@ -2568,6 +2568,9 @@ NTSTATUS smbd_dirptr_lanman2_entry(TALLOC_CTX *ctx, > &mode, > &prev_dirpos); > if (!ok) { >+ if (errno == EIO) { >+ return NT_STATUS_FILE_CORRUPT_ERROR; >+ } > return NT_STATUS_END_OF_FILE; > } > >-- >2.17.0.windows.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 13718
:
14755
| 15337