summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2018-10-20 23:46:43 +0200
committerKarolin Seeger <kseeger@samba.org>2018-11-06 09:10:25 +0100
commit248b5fc305b3b18ff82a9567234ba46ebe779f1f (patch)
tree7c58fa1060395604c435b6365a58d85a7ce22af9 /source3
parent1078e220e5a80bc2c36eb915e5c323c286d8bc13 (diff)
downloadsamba-248b5fc305b3b18ff82a9567234ba46ebe779f1f.tar.gz
vfs_fruit: pass stream size to delete_invalid_meta_stream()
delete_invalid_meta_stream() is meant to guard against random data being present in the FinderInfo stream. If the stream size is 0, it's likely a freshly created stream where no data has been written to yet, so don't delete it. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13646 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit 6e13dbddaec9f8118e11309297f85c3cdfd22e43)
Diffstat (limited to 'source3')
-rw-r--r--source3/modules/vfs_fruit.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
index ff981d0479b..07ee5654e5d 100644
--- a/source3/modules/vfs_fruit.c
+++ b/source3/modules/vfs_fruit.c
@@ -5332,7 +5332,8 @@ static NTSTATUS delete_invalid_meta_stream(
const struct smb_filename *smb_fname,
TALLOC_CTX *mem_ctx,
unsigned int *pnum_streams,
- struct stream_struct **pstreams)
+ struct stream_struct **pstreams,
+ off_t size)
{
struct smb_filename *sname = NULL;
int ret;
@@ -5343,6 +5344,10 @@ static NTSTATUS delete_invalid_meta_stream(
return NT_STATUS_INTERNAL_ERROR;
}
+ if (size == 0) {
+ return NT_STATUS_OK;
+ }
+
sname = synthetic_smb_fname(talloc_tos(),
smb_fname->base_name,
AFPINFO_STREAM_NAME,
@@ -5396,8 +5401,12 @@ static NTSTATUS fruit_streaminfo_meta_stream(
DBG_ERR("Removing invalid AFPINFO_STREAM size [%jd] from [%s]\n",
(intmax_t)stream[i].size, smb_fname_str_dbg(smb_fname));
- return delete_invalid_meta_stream(handle, smb_fname, mem_ctx,
- pnum_streams, pstreams);
+ return delete_invalid_meta_stream(handle,
+ smb_fname,
+ mem_ctx,
+ pnum_streams,
+ pstreams,
+ stream[i].size);
}
/*