From eb490fc6468be69af68823b64ade23cadf61834e Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 29 Sep 2020 17:41:10 -0700 Subject: [PATCH 1/4] Allow mapdir aliases with starting `/` Stripping leading `/` is valid because we mount mapped dirs at `/` regardless. --- lib/wasi/src/state/builder.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/wasi/src/state/builder.rs b/lib/wasi/src/state/builder.rs index 0bd8bd2185d..b3636eecbbb 100644 --- a/lib/wasi/src/state/builder.rs +++ b/lib/wasi/src/state/builder.rs @@ -438,7 +438,17 @@ impl PreopenDirBuilder { /// Make this preopened directory appear to the WASI program as `alias` pub fn alias(&mut self, alias: &str) -> &mut Self { - self.alias = Some(alias.to_string()); + let alias = if let Some(first_byte) = alias.as_bytes().first() { + if *first_byte == b'/' { + &alias[1..] + } else { + alias + } + } else { + alias + } + .to_string(); + self.alias = Some(alias); self } From 4efacc305852dda95158a87bf7e6769670a6d666 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 30 Sep 2020 16:35:32 -0700 Subject: [PATCH 2/4] Squashed 'tests/wasi-wast/' changes from 15de05557..f3af784fb f3af784fb Add mapdir with leading slash test git-subtree-dir: tests/wasi-wast git-subtree-split: f3af784fb148ccd5037ae159c39e99b372bad1cf --- wasi/snapshot1/mapdir_with_leading_slash.wasm | Bin 0 -> 72565 bytes wasi/snapshot1/mapdir_with_leading_slash.wast | 7 ++++++ wasi/tests/mapdir_with_leading_slash.rs | 23 ++++++++++++++++++ wasi/unstable/mapdir_with_leading_slash.wasm | Bin 0 -> 71923 bytes wasi/unstable/mapdir_with_leading_slash.wast | 7 ++++++ 5 files changed, 37 insertions(+) create mode 100644 wasi/snapshot1/mapdir_with_leading_slash.wasm create mode 100644 wasi/snapshot1/mapdir_with_leading_slash.wast create mode 100644 wasi/tests/mapdir_with_leading_slash.rs create mode 100644 wasi/unstable/mapdir_with_leading_slash.wasm create mode 100644 wasi/unstable/mapdir_with_leading_slash.wast diff --git a/wasi/snapshot1/mapdir_with_leading_slash.wasm b/wasi/snapshot1/mapdir_with_leading_slash.wasm new file mode 100644 index 0000000000000000000000000000000000000000..26e68d85722b0e1cb64b5b9274c4c7a69561e8a5 GIT binary patch literal 72565 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 +} diff --git a/wasi/unstable/mapdir_with_leading_slash.wasm b/wasi/unstable/mapdir_with_leading_slash.wasm new file mode 100644 index 0000000000000000000000000000000000000000..eacc71d81e3bb27085bc2769d41a04d113eade99 GIT binary patch literal 71923 zcmd?S51eIJRp)#5Ip^NGRi~=^bZA16Zppcq7AlgM)`{s%6HM)Xq&rO~1bHZo&v{9N z@TUqws=8^=2dPTZU`wJzWgs8}Ed~ifAR}IL2p$08yhxr)8pMB#`<3 z);j0hd#fu+hhcp0^LaF>^KbuId+qgquf1<_+5XprBuT<`Ve_Tw%1T(dG^`|-W-E5f zi-c!h>P2#C&R;Hxy}ZgF`IzuuN1s&EZ@lbP))Ifa_En!J{7$!%c6-%TRxMk(%KEXV z^r3WS=Jl8Df7K=O>MPe%Y&*FS+8f z*Ib^Y<7GBoe#OC8Ex-1POZLC&M=#&MUModYVx1l~T(_NWTu;Y(_urHNKVT0PL}6Mo&pHaO=O)cWLes!BCsY& zPL=7Tm`J+aPL@)VPLnj(or*ju**KXdc~0jxmeNN`JE?! z|F4Dr7*2k3`uXsm!k>rV4Sy0&{*IIXBK%EwAe?+S{oC+&;lG9-OW%@C{nGDc4~H+M zAzyiV63fLwvMnh;8e-ND>Ae1B^Hr#lG8v??w7vNK8arTm!wd?3u^MHQ$u2s5E5)I~~5RT8Hc%5;XCxilGs^JhZ* z1XDoK^gztj$JwcUoK|;yPwcx2(|6+CB^0JdN;V&>P-f@Pq(%Ilr2KG53VUxQtZVC* z;pN`(v~_HKdM^fzk8hbG8bJrp+UE3q`jqlX42JQ>a$#Gtv9Mtdiv;WVM?+Zgp@OtQ zR)xhX-3tzBa$%5GVJ{72F&r51f`4J}mO+Tg1v6>7Qe{FmI4hqq9SQ?UMH$*N3k^Pi zKCqK>Nf~+p1S34*RiSkF{BVj3S z+&u#!_B%8;w;;fCtI@ZvX<|21W?hvh={mbmzQsP3gRTZVq0*ZN>0VIj012FQp_-`D z#q!G`H2`W*T3mOGAT>h93iOrQ0(AncBV

*(%&p<+tpr-g0P1n(L#wD4#O?o}HFe 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 X6Fm(o%DPuKeEe;2Ru{=53YPx@2sFHU literal 0 HcmV?d00001 diff --git a/wasi/unstable/mapdir_with_leading_slash.wast b/wasi/unstable/mapdir_with_leading_slash.wast new file mode 100644 index 00000000000..945e660f72c --- /dev/null +++ b/wasi/unstable/mapdir_with_leading_slash.wast @@ -0,0 +1,7 @@ +;; This file was generated by https://github.com/wasmerio/wasi-tests + +(wasi_test "mapdir_with_leading_slash.wasm" + (map_dirs "/hamlet:test_fs/hamlet") + (assert_return (i64.const 0)) + (assert_stdout "File exists? true\nSCENE III. A room in the castle.\n\n Enter KING CLAUDIUS, ROSENCRANTZ, and GUILDENSTERN \n\nKING CLAUDIUS\n\n I like him not, nor stands it safe with us\n To let his madness range. Therefore prepare you;\n I your commission will forthwith dispatch,\n \n") +) From 614e4f7033b2014fa48070eb6733611e208caa74 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Wed, 30 Sep 2020 17:47:24 -0700 Subject: [PATCH 3/4] Clean up code and add comment --- lib/wasi/src/state/builder.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lib/wasi/src/state/builder.rs b/lib/wasi/src/state/builder.rs index b3636eecbbb..f6694bb021a 100644 --- a/lib/wasi/src/state/builder.rs +++ b/lib/wasi/src/state/builder.rs @@ -438,17 +438,10 @@ impl PreopenDirBuilder { /// Make this preopened directory appear to the WASI program as `alias` pub fn alias(&mut self, alias: &str) -> &mut Self { - let alias = if let Some(first_byte) = alias.as_bytes().first() { - if *first_byte == b'/' { - &alias[1..] - } else { - alias - } - } else { - alias - } - .to_string(); - self.alias = Some(alias); + // We mount at preopened dirs at `/` by default and multiple `/` in a row + // are equal to a single `/`. + let alias = alias.trim_start_matches('/'); + self.alias = Some(alias.to_string()); self } From 9c208a1529f855db26aab02d536117162c6f12a7 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Thu, 1 Oct 2020 11:47:22 -0700 Subject: [PATCH 4/4] Ignore mapdir_with_leading_slash on Windows for now These tests are failing because we call `take(N)` on chars of a string read from a file. It seems that on Windows, the programs get line endings with `\r\n`, this is a problem for the way our tests assert correct output. We'll need to find a general solution to this problem later. --- tests/ignores.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/ignores.txt b/tests/ignores.txt index 85b22ac4cfc..38be894e125 100644 --- a/tests/ignores.txt +++ b/tests/ignores.txt @@ -61,12 +61,14 @@ wasitests::snapshot1::file_metadata on windows wasitests::snapshot1::fseek on windows wasitests::snapshot1::path_link on windows wasitests::snapshot1::path_symlink on windows +wasitests::snapshot1::mapdir_with_leading_slash on windows wasitests::unstable::fd_pread on windows wasitests::unstable::fd_read on windows wasitests::unstable::file_metadata on windows wasitests::unstable::fseek on windows wasitests::unstable::path_link on windows wasitests::unstable::path_symlink on windows +wasitests::unstable::mapdir_with_leading_slash on windows # This test is meant to only run on Unix wasitests::unstable::unix_open_special_files on windows