summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/local/local_cas_reader.hpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2025-05-16 17:30:39 +0200
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2025-06-04 14:34:44 +0200
commit3a4dc9753561c70af7a939e5f3d729d8accc52f9 (patch)
tree5e17d77df5af5b1bb7e0bc612af3278b2faf6f88 /src/buildtool/execution_api/local/local_cas_reader.hpp
parentd5177881b4df769afcf18ca803f6c2f153285207 (diff)
downloadjustbuild-3a4dc9753561c70af7a939e5f3d729d8accc52f9.tar.gz
LocalCasReader: Add validity check for bazel directories
This will check if directories contain upwards symlinks.
Diffstat (limited to 'src/buildtool/execution_api/local/local_cas_reader.hpp')
-rw-r--r--src/buildtool/execution_api/local/local_cas_reader.hpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/local/local_cas_reader.hpp b/src/buildtool/execution_api/local/local_cas_reader.hpp
index 090aa9d1..3ac47f64 100644
--- a/src/buildtool/execution_api/local/local_cas_reader.hpp
+++ b/src/buildtool/execution_api/local/local_cas_reader.hpp
@@ -26,6 +26,7 @@
#include "src/buildtool/common/bazel_types.hpp"
#include "src/buildtool/file_system/git_repo.hpp"
#include "src/buildtool/storage/local_cas.hpp"
+#include "src/utils/cpp/expected.hpp"
class LocalCasReader final {
public:
@@ -58,6 +59,13 @@ class LocalCasReader final {
[[nodiscard]] auto IsNativeProtocol() const noexcept -> bool;
+ /// \brief Check recursively if Directory contains any invalid entries
+ /// (i.e., upwards symlinks).
+ /// \returns True if Directory is ok, false if at least on upwards symlink
+ /// has been found, error message on other failures.
+ [[nodiscard]] auto IsDirectoryValid(ArtifactDigest const& digest)
+ const noexcept -> expected<bool, std::string>;
+
private:
LocalCAS<true> const& cas_;