summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2025-01-10 15:19:21 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2025-01-10 17:05:53 +0100
commita8b50ad395b72c6933c164d064d86d60cd6b594c (patch)
treec2e9e3b76af4098ddcafb27620553481c97d0fda /src
parent5fa002501406fc88c6cf2af32f84ee7305e48f8f (diff)
downloadjustbuild-a8b50ad395b72c6933c164d064d86d60cd6b594c.tar.gz
just-mr setup: Fix ensuring field 'subdir' only accepts relative paths
Diffstat (limited to 'src')
-rw-r--r--src/other_tools/repo_map/repos_to_setup_map.cpp7
-rw-r--r--src/other_tools/utils/parse_archive.cpp7
2 files changed, 14 insertions, 0 deletions
diff --git a/src/other_tools/repo_map/repos_to_setup_map.cpp b/src/other_tools/repo_map/repos_to_setup_map.cpp
index d8bfe3a3..27c39a77 100644
--- a/src/other_tools/repo_map/repos_to_setup_map.cpp
+++ b/src/other_tools/repo_map/repos_to_setup_map.cpp
@@ -112,6 +112,13 @@ void GitCheckout(ExpressionPtr const& repo_desc,
? repo_desc_subdir->String()
: "")
.lexically_normal();
+ if (subdir.is_absolute()) {
+ (*logger)(fmt::format("GitCheckout: Expected field \"subdir\" to be a "
+ "relative path, but found {}",
+ subdir.string()),
+ /*fatal=*/true);
+ return;
+ }
// check optional mirrors
auto repo_desc_mirrors = repo_desc->Get("mirrors", Expression::list_t{});
std::vector<std::string> mirrors{};
diff --git a/src/other_tools/utils/parse_archive.cpp b/src/other_tools/utils/parse_archive.cpp
index b07bc425..50b9d4a3 100644
--- a/src/other_tools/utils/parse_archive.cpp
+++ b/src/other_tools/utils/parse_archive.cpp
@@ -129,6 +129,13 @@ auto ParseArchiveDescription(ExpressionPtr const& repo_desc,
? repo_desc_subdir->String()
: "")
.lexically_normal();
+ if (subdir.is_absolute()) {
+ (*logger)(fmt::format("ArchiveCheckout: Expected field \"subdir\" to "
+ "be a relative path, but found {}",
+ subdir.string()),
+ /*fatal=*/true);
+ return std::nullopt;
+ }
// check "special" pragma
auto repo_desc_pragma = repo_desc->At("pragma");