[Samba] 4.20: case (in)sensitive is broken
Jeremy Allison
jra at samba.org
Mon Jun 10 17:55:38 UTC 2024
On Fri, Jun 07, 2024 at 09:59:14PM +0300, Michael Tokarev via samba wrote:
>07.06.2024 20:52, Jeremy Allison wrote:
>
>>Fair enough. Can you post a minimal smb.conf and directory
>>setup that reproduces the problem and how to demo it with smbclient
>>command lines please ? I know I'm asking to be spoon-fed but my time for
>>Samba these days is quite limited and this would aid immensely
>>in creating a properly tested fix.
>
>You're not asking to be spoon-feeding. Because the thing turned out to be
>tricky. This is why it took so long for me to create a small reproducer, -
>initially I found out that turning off wide links triggers this issue.
>However, it turned out to be insufficient alone. And especially tricky to
>me was another parameter which is also necessary. Actually two, but one
>of them is something I haven't tried for a long time here, because it is
>set by samba implicitly already.
Here is the fix. Not sure if it breaks anything else (yet) :-).
Can you create me a bug please and I'll add a regression test
for this ?
Thanks,
Jeremy.
diff --git a/source3/modules/vfs_widelinks.c b/source3/modules/vfs_widelinks.c
index c5b5084e108..f3c9f0e359c 100644
--- a/source3/modules/vfs_widelinks.c
+++ b/source3/modules/vfs_widelinks.c
@@ -383,8 +383,14 @@ static int widelinks_openat(vfs_handle_struct *handle,
}
lstat_ret = SMB_VFS_NEXT_LSTAT(handle,
full_fname);
- if (lstat_ret != -1 &&
- VALID_STAT(full_fname->st) &&
+ if (lstat_ret == -1) {
+ /* Can't be a DFS link. */
+ int saved_errno = errno;
+ TALLOC_FREE(full_fname);
+ errno = saved_errno;
+ return -1;
+ }
+ if (VALID_STAT(full_fname->st) &&
S_ISLNK(full_fname->st.st_ex_mode)) {
fsp->fsp_name->st = full_fname->st;
}
More information about the samba
mailing list