diff options
author | sterni <sternenseemann@systemli.org> | 2024-12-20T12·43+0100 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-12-20T23·38+0000 |
commit | 756e96499c7ab747a1fb967369d661a725071f24 (patch) | |
tree | 56d7d343a7806e931c5fce1c5a72c19f2646e30a | |
parent | de4004a8ead792919282f5f4bba78ef0c01058e8 (diff) |
fix(nix/writeTree): also shell escape path nodes r/9011
We allow strings with context that represent paths (since they qualify as `pathLike`). While store path (names) may not contain any characters that are meaningful in shell, they may contain directories and/or files with such names since it's permissible in POSIX. To fix this, we convert the given value `v` to a shell argument in two stages: 1. Use `${v}` to coerce the value to a string while importing any necessary paths to store. 2. Escape the resulting string for use as an argument. Change-Id: Ib989b50df2a921c2abcd1ebc7ca0ff6e2bb79088 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12898 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Autosubmit: sterni <sternenseemann@systemli.org>
-rw-r--r-- | nix/writeTree/default.nix | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/nix/writeTree/default.nix b/nix/writeTree/default.nix index 0c7c2a130feb..4f22221f3014 100644 --- a/nix/writeTree/default.nix +++ b/nix/writeTree/default.nix @@ -17,7 +17,7 @@ let + pipe tree [ (mapAttrsToList (k: v: if isPathLike v then - "cp -R --reflink=auto ${v} \"$out/\"${esc path}/${esc k}" + "cp -R --reflink=auto ${esc "${v}"} \"$out/\"${esc path}/${esc k}" else if lib.isAttrs v then writeTreeAtPath (path + "/" + k) v else |