diff options
author | Joel Rosdahl <joel@rosdahl.net> | 2022-12-23 19:03:13 +0100 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2022-12-23 19:21:41 +0100 |
commit | 63a988d5deae415ca436c7327dec729c16961b12 (patch) | |
tree | 03f9a2384a5066523a0cbb2563ad079cbfa0cbbd /src | |
parent | a68cae9021a445550afdcd1bcce3cb3352c3c8f9 (diff) | |
download | ccache-63a988d5deae415ca436c7327dec729c16961b12.tar.gz |
fix: Only use original umask when retrieving result
This fixes a problem where the original umask would be used when storing
a remote cache result in the local cache in from_cache.
Fixes #1235.
Diffstat (limited to 'src')
-rw-r--r-- | src/ccache.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/ccache.cpp b/src/ccache.cpp index 8f71e2a2..5179d8d3 100644 --- a/src/ccache.cpp +++ b/src/ccache.cpp @@ -2040,8 +2040,6 @@ enum class FromCacheCallMode { direct, cpp }; static nonstd::expected<bool, Failure> from_cache(Context& ctx, FromCacheCallMode mode, const Digest& result_key) { - UmaskScope umask_scope(ctx.original_umask); - // The user might be disabling cache hits. if (ctx.config.recache()) { return false; @@ -2080,6 +2078,7 @@ from_cache(Context& ctx, FromCacheCallMode mode, const Digest& result_key) cache_entry.verify_checksum(); core::Result::Deserializer deserializer(cache_entry.payload()); core::ResultRetriever result_retriever(ctx, result_key); + UmaskScope umask_scope(ctx.original_umask); deserializer.visit(result_retriever); } catch (core::ResultRetriever::WriteError& e) { LOG("Write error when retrieving result from {}: {}", |