RFC: fix a check in stat_cache_add()

Ralph Böhme slow at samba.org
Wed Jun 27 11:13:00 UTC 2018


I just stumbled upon a check in stat_cache_add() that seems to be wrong, cf the
commit message in the attached patch. What do you think?


Ralph Boehme, Samba Team       https://samba.org/
Samba Developer, SerNet GmbH   https://sernet.de/en/samba/
GPG Key Fingerprint:           FAE2 C608 8A24 2520 51C5
                               59E4 AA1E 9B71 2639 9E46
-------------- next part --------------
From 8f9aa76cdaf04de73b25485488d96cdf4122f7e7 Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow at samba.org>
Date: Wed, 27 Jun 2018 13:07:00 +0200
Subject: [PATCH] s3: smbd: fix a check in stat_cache_add()

As the comment above the if condition says:

         * If we are in case insentive mode, we don't need to
         * store names that need no translation - else, it
         * would be a waste.

Ie if stat_cache_add() is called as

        stat_cache_add("foo/bar", "foo/bar", false)

There's no need to cache the path, as a simple stat() on the client
supplied name (full_orig_name) matches the name used in the
filesystem (passed to stat_cache_add() as translated_path).

So fix the if condition to match the comment.
 source3/smbd/statcache.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/smbd/statcache.c b/source3/smbd/statcache.c
index d49f5eebdf0..27f9dec48f7 100644
--- a/source3/smbd/statcache.c
+++ b/source3/smbd/statcache.c
@@ -73,7 +73,7 @@ void stat_cache_add( const char *full_orig_name,
 	 * would be a waste.
-	if (case_sensitive && (strcmp(full_orig_name, translated_path) == 0)) {
+	if (!case_sensitive && (strcmp(full_orig_name, translated_path) == 0)) {

More information about the samba-technical mailing list