mirror of
https://github.com/samba-team/samba.git
synced 2025-01-18 06:04:06 +03:00
smbd: Fix BZ15481
Bug: https://bugzilla.samba.org/show_bug.cgi?id=15481 Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Wed Sep 20 22:42:48 UTC 2023 on atb-devel-224
This commit is contained in:
parent
56df75d447
commit
3481bbfede
@ -1 +0,0 @@
|
|||||||
^samba.tests.libsmb-basic.samba.tests.libsmb-basic.LibsmbTestCase.test_gencache_pollution_bz15481
|
|
@ -784,6 +784,7 @@ static NTSTATUS openat_pathref_fsp_case_insensitive(
|
|||||||
|
|
||||||
if (lp_stat_cache()) {
|
if (lp_stat_cache()) {
|
||||||
char *base_name = smb_fname_rel->base_name;
|
char *base_name = smb_fname_rel->base_name;
|
||||||
|
char *original_relname = NULL;
|
||||||
DATA_BLOB value = { .data = NULL };
|
DATA_BLOB value = { .data = NULL };
|
||||||
|
|
||||||
ok = get_real_filename_cache_key(
|
ok = get_real_filename_cache_key(
|
||||||
@ -805,7 +806,13 @@ static NTSTATUS openat_pathref_fsp_case_insensitive(
|
|||||||
}
|
}
|
||||||
DO_PROFILE_INC(statcache_hits);
|
DO_PROFILE_INC(statcache_hits);
|
||||||
|
|
||||||
TALLOC_FREE(smb_fname_rel->base_name);
|
/*
|
||||||
|
* For the "new filename" case we need to preserve the
|
||||||
|
* capitalization the client sent us, see
|
||||||
|
* https://bugzilla.samba.org/show_bug.cgi?id=15481
|
||||||
|
*/
|
||||||
|
original_relname = smb_fname_rel->base_name;
|
||||||
|
|
||||||
smb_fname_rel->base_name = talloc_memdup(
|
smb_fname_rel->base_name = talloc_memdup(
|
||||||
smb_fname_rel, value.data, value.length);
|
smb_fname_rel, value.data, value.length);
|
||||||
if (smb_fname_rel->base_name == NULL) {
|
if (smb_fname_rel->base_name == NULL) {
|
||||||
@ -823,10 +830,13 @@ static NTSTATUS openat_pathref_fsp_case_insensitive(
|
|||||||
status = openat_pathref_fsp(dirfsp, smb_fname_rel);
|
status = openat_pathref_fsp(dirfsp, smb_fname_rel);
|
||||||
if (NT_STATUS_IS_OK(status)) {
|
if (NT_STATUS_IS_OK(status)) {
|
||||||
TALLOC_FREE(cache_key.data);
|
TALLOC_FREE(cache_key.data);
|
||||||
|
TALLOC_FREE(original_relname);
|
||||||
return NT_STATUS_OK;
|
return NT_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcache_delete(NULL, GETREALFILENAME_CACHE, cache_key);
|
memcache_delete(NULL, GETREALFILENAME_CACHE, cache_key);
|
||||||
|
TALLOC_FREE(smb_fname_rel->base_name);
|
||||||
|
smb_fname_rel->base_name = original_relname;
|
||||||
}
|
}
|
||||||
|
|
||||||
lookup:
|
lookup:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user