mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
vfs_fruit: update handling of read-only creation of resource fork
macOS SMB server versions supports this since 10.12, so we adapt our behaviour. 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>
This commit is contained in:
parent
c3cf09a079
commit
055ca448f1
@ -1,5 +1,2 @@
|
||||
^samba3.vfs.fruit streams_depot.OS X AppleDouble file conversion\(nt4_dc\)
|
||||
^samba3.vfs.fruit streams_depot.OS X AppleDouble file conversion without embedded xattr\(nt4_dc\)
|
||||
^samba3.vfs.fruit metadata_netatalk.creating rsrc with read-only access\(nt4_dc\)
|
||||
^samba3.vfs.fruit metadata_stream.creating rsrc with read-only access\(nt4_dc\)
|
||||
^samba3.vfs.fruit streams_depot.creating rsrc with read-only access\(nt4_dc\)
|
||||
|
@ -3575,12 +3575,9 @@ static int fruit_open_rsrc_adouble(vfs_handle_struct *handle,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Sanitize flags */
|
||||
if (flags & O_WRONLY) {
|
||||
/* We always need read access for the metadata header too */
|
||||
flags &= ~O_WRONLY;
|
||||
flags |= O_RDWR;
|
||||
}
|
||||
/* We always need read/write access for the metadata header too */
|
||||
flags &= ~(O_RDONLY | O_WRONLY);
|
||||
flags |= O_RDWR;
|
||||
|
||||
hostfd = SMB_VFS_NEXT_OPEN(handle, smb_fname_base, fsp,
|
||||
flags, mode);
|
||||
@ -3667,20 +3664,6 @@ static int fruit_open_rsrc(vfs_handle_struct *handle,
|
||||
SMB_VFS_HANDLE_GET_DATA(handle, config,
|
||||
struct fruit_config_data, return -1);
|
||||
|
||||
if (((flags & O_ACCMODE) == O_RDONLY)
|
||||
&& (flags & O_CREAT)
|
||||
&& !VALID_STAT(fsp->fsp_name->st))
|
||||
{
|
||||
/*
|
||||
* This means the stream doesn't exist. macOS SMB server fails
|
||||
* this with NT_STATUS_OBJECT_NAME_NOT_FOUND, so must we. Cf bug
|
||||
* 12565 and the test for this combination in
|
||||
* test_rfork_create().
|
||||
*/
|
||||
errno = ENOENT;
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (config->rsrc) {
|
||||
case FRUIT_RSRC_STREAM:
|
||||
fd = SMB_VFS_NEXT_OPEN(handle, smb_fname, fsp, flags, mode);
|
||||
|
Loading…
x
Reference in New Issue
Block a user