diff --git a/repos/base-linux/run/lx_fs_notify.run b/repos/base-linux/run/lx_fs_notify.run index f7b856aa6e..067e22be7a 100644 --- a/repos/base-linux/run/lx_fs_notify.run +++ b/repos/base-linux/run/lx_fs_notify.run @@ -47,10 +47,10 @@ install_config { - - - - + + + + @@ -117,8 +117,8 @@ set init_run_fwrite_test { - - + + @@ -153,8 +153,8 @@ set init_run_write_test { - - + + diff --git a/repos/gems/recipes/pkg/dbg_download/runtime b/repos/gems/recipes/pkg/dbg_download/runtime index a2896772f8..8e3adedde4 100644 --- a/repos/gems/recipes/pkg/dbg_download/runtime +++ b/repos/gems/recipes/pkg/dbg_download/runtime @@ -60,7 +60,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -101,10 +101,10 @@ - + - + @@ -118,13 +118,13 @@ - + - - + + diff --git a/repos/gems/recipes/pkg/file_vault/runtime b/repos/gems/recipes/pkg/file_vault/runtime index b1a84f3cbe..3a215f05eb 100644 --- a/repos/gems/recipes/pkg/file_vault/runtime +++ b/repos/gems/recipes/pkg/file_vault/runtime @@ -86,17 +86,17 @@ - + - - - - - - + + + + + + @@ -111,7 +111,7 @@ - + diff --git a/repos/gems/recipes/pkg/test-file_vault/runtime b/repos/gems/recipes/pkg/test-file_vault/runtime index 28b115b49d..a4aff2513e 100644 --- a/repos/gems/recipes/pkg/test-file_vault/runtime +++ b/repos/gems/recipes/pkg/test-file_vault/runtime @@ -85,7 +85,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -118,26 +118,27 @@ - + - - label="ui_report" - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime b/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime index 98c86851f9..b15097d772 100644 --- a/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime +++ b/repos/gems/recipes/pkg/test-file_vault_no_entropy/runtime @@ -85,7 +85,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -118,26 +118,27 @@ - + - - label="ui_report" - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/repos/gems/recipes/pkg/touch_keyboard/runtime b/repos/gems/recipes/pkg/touch_keyboard/runtime index a89175a96f..a9fc69edd8 100644 --- a/repos/gems/recipes/pkg/touch_keyboard/runtime +++ b/repos/gems/recipes/pkg/touch_keyboard/runtime @@ -27,8 +27,8 @@ - - + + diff --git a/repos/gems/recipes/pkg/trace_recorder/runtime b/repos/gems/recipes/pkg/trace_recorder/runtime index 9636c920bc..1bc9d562d5 100644 --- a/repos/gems/recipes/pkg/trace_recorder/runtime +++ b/repos/gems/recipes/pkg/trace_recorder/runtime @@ -19,7 +19,7 @@ - + diff --git a/repos/gems/recipes/pkg/window_layouter/runtime b/repos/gems/recipes/pkg/window_layouter/runtime index 062d6f50e2..ab7fef859c 100644 --- a/repos/gems/recipes/pkg/window_layouter/runtime +++ b/repos/gems/recipes/pkg/window_layouter/runtime @@ -33,7 +33,7 @@ - + @@ -42,7 +42,7 @@ - + diff --git a/repos/gems/recipes/raw/depot_download/depot_download.config b/repos/gems/recipes/raw/depot_download/depot_download.config index 8bac909fc9..d11f769347 100644 --- a/repos/gems/recipes/raw/depot_download/depot_download.config +++ b/repos/gems/recipes/raw/depot_download/depot_download.config @@ -61,7 +61,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -99,11 +99,11 @@ - - - - - + + + + + diff --git a/repos/gems/recipes/raw/download_coreplus/init.config b/repos/gems/recipes/raw/download_coreplus/init.config index 38acb78696..6933c1f956 100644 --- a/repos/gems/recipes/raw/download_coreplus/init.config +++ b/repos/gems/recipes/raw/download_coreplus/init.config @@ -27,7 +27,7 @@ - + cp /machine.vbox /disk0.vmdk /vm @@ -38,8 +38,8 @@ cp /machine.vbox /disk0.vmdk /vm - - + + @@ -82,7 +82,7 @@ cp /machine.vbox /disk0.vmdk /vm - + @@ -126,7 +126,7 @@ cp /machine.vbox /disk0.vmdk /vm - + diff --git a/repos/gems/run/depot_autopilot.run b/repos/gems/run/depot_autopilot.run index 034c0889ee..dfc8e587e1 100644 --- a/repos/gems/run/depot_autopilot.run +++ b/repos/gems/run/depot_autopilot.run @@ -335,10 +335,10 @@ proc prepare_to_run_genode { } { - - - - + + + + @@ -348,7 +348,7 @@ proc prepare_to_run_genode { } { - + @@ -375,16 +375,16 @@ proc prepare_to_run_genode { } { } [single_test_module_routes] { - - - - - - - - - - + + + + + + + + + + - - + + @@ -110,7 +110,7 @@ install_config { - + @@ -172,17 +172,17 @@ install_config { - - + + - - - - + + + + @@ -216,7 +216,7 @@ install_config { - + diff --git a/repos/gems/run/depot_download.run b/repos/gems/run/depot_download.run index b0b55d70dc..f970050c5f 100644 --- a/repos/gems/run/depot_download.run +++ b/repos/gems/run/depot_download.run @@ -116,8 +116,8 @@ append config { - - + + diff --git a/repos/gems/run/depot_query.run b/repos/gems/run/depot_query.run index de0144e677..e80cae0051 100644 --- a/repos/gems/run/depot_query.run +++ b/repos/gems/run/depot_query.run @@ -68,8 +68,8 @@ install_config { - - + + @@ -79,7 +79,7 @@ install_config { - + diff --git a/repos/gems/run/depot_remove.run b/repos/gems/run/depot_remove.run index 76695f0917..da0f55f01a 100644 --- a/repos/gems/run/depot_remove.run +++ b/repos/gems/run/depot_remove.run @@ -56,7 +56,7 @@ install_config { - + diff --git a/repos/gems/run/file_vault.run b/repos/gems/run/file_vault.run index ec3016d368..443062bd65 100644 --- a/repos/gems/run/file_vault.run +++ b/repos/gems/run/file_vault.run @@ -191,20 +191,21 @@ append config { - + - - - - - - - + + + + + + + + diff --git a/repos/gems/run/file_vault_client.run b/repos/gems/run/file_vault_client.run index be0288ac54..3ba633d63a 100644 --- a/repos/gems/run/file_vault_client.run +++ b/repos/gems/run/file_vault_client.run @@ -216,8 +216,8 @@ append config { - - + + @@ -269,7 +269,7 @@ if {[have_board linux]} { - @@ -288,7 +288,7 @@ if {[have_board linux]} { - @@ -315,7 +315,7 @@ if {[have_board linux]} { - + @@ -334,7 +334,7 @@ if {[have_board linux]} { - + @@ -354,20 +354,21 @@ append config { - + - - - - - - - + + + + + + + + @@ -381,7 +382,7 @@ append config { - + diff --git a/repos/gems/run/file_vault_gui.run b/repos/gems/run/file_vault_gui.run index 0000d018b2..6e59768ad0 100644 --- a/repos/gems/run/file_vault_gui.run +++ b/repos/gems/run/file_vault_gui.run @@ -165,7 +165,7 @@ append_if [have_board linux] config { - + @@ -182,7 +182,7 @@ append_if [have_board linux] config { - + @@ -200,7 +200,7 @@ append_if [expr ![have_board linux]] config { - + @@ -215,7 +215,7 @@ append_if [expr ![have_board linux]] config { - + @@ -243,17 +243,18 @@ append config { - + - - - - - - + + + + + + + @@ -265,7 +266,7 @@ append config { - + diff --git a/repos/gems/run/menu_view.run b/repos/gems/run/menu_view.run index 00e32527e6..2c7bdd5fe4 100644 --- a/repos/gems/run/menu_view.run +++ b/repos/gems/run/menu_view.run @@ -306,7 +306,7 @@ install_config { - + @@ -314,7 +314,7 @@ install_config { - + diff --git a/repos/gems/run/sculpt.run b/repos/gems/run/sculpt.run index 742c99a057..199fb1442f 100644 --- a/repos/gems/run/sculpt.run +++ b/repos/gems/run/sculpt.run @@ -347,8 +347,8 @@ install_config { - - + + @@ -386,10 +386,10 @@ install_config { - - - - + + + + @@ -637,12 +637,10 @@ install_config { - - - - - - + + + + @@ -670,10 +668,10 @@ install_config { - - - - + + + + @@ -700,8 +698,8 @@ install_config { - - + + } [log_route] [driver_routes] { diff --git a/repos/gems/run/text_area.run b/repos/gems/run/text_area.run index 26826070ca..8aae81d6ab 100644 --- a/repos/gems/run/text_area.run +++ b/repos/gems/run/text_area.run @@ -105,12 +105,12 @@ install_config { - + - - + + @@ -121,13 +121,13 @@ install_config { max_lines="10" min_width="600"> - + - - + + diff --git a/repos/gems/run/tresor_tester.run b/repos/gems/run/tresor_tester.run index 8d142c4700..5d11a8f405 100644 --- a/repos/gems/run/tresor_tester.run +++ b/repos/gems/run/tresor_tester.run @@ -190,7 +190,7 @@ append config { - + @@ -898,7 +898,7 @@ append config { - + diff --git a/repos/gems/run/tresor_utils.run b/repos/gems/run/tresor_utils.run index 07b71440e7..27a0e0c4d9 100644 --- a/repos/gems/run/tresor_utils.run +++ b/repos/gems/run/tresor_utils.run @@ -67,7 +67,7 @@ append config { - + @@ -88,7 +88,7 @@ append config { - + @@ -112,7 +112,7 @@ append config { - + @@ -125,7 +125,7 @@ append config { - + diff --git a/repos/gems/run/vfs_tresor.run b/repos/gems/run/vfs_tresor.run index 296a0d7fe4..9463a1f4b2 100644 --- a/repos/gems/run/vfs_tresor.run +++ b/repos/gems/run/vfs_tresor.run @@ -108,7 +108,7 @@ append config { - + @@ -122,10 +122,10 @@ append config { - + - + @@ -162,9 +162,9 @@ append config { - + - + - - + + @@ -250,8 +250,8 @@ append config { - - + + diff --git a/repos/gems/sculpt/deploy/example b/repos/gems/sculpt/deploy/example index 9058277385..4774763543 100644 --- a/repos/gems/sculpt/deploy/example +++ b/repos/gems/sculpt/deploy/example @@ -35,7 +35,8 @@ - + + diff --git a/repos/gems/sculpt/deploy/falkon_web_browser b/repos/gems/sculpt/deploy/falkon_web_browser index 0f32302cbf..7a39f15235 100644 --- a/repos/gems/sculpt/deploy/falkon_web_browser +++ b/repos/gems/sculpt/deploy/falkon_web_browser @@ -21,7 +21,7 @@ - + @@ -68,8 +68,8 @@ - - + + diff --git a/repos/gems/sculpt/deploy/window_manager b/repos/gems/sculpt/deploy/window_manager index 49786e10d8..a5ba98e907 100644 --- a/repos/gems/sculpt/deploy/window_manager +++ b/repos/gems/sculpt/deploy/window_manager @@ -14,10 +14,10 @@ - - - - + + + + @@ -33,7 +33,7 @@ - + diff --git a/repos/gems/sculpt/launcher/direct_system_shell b/repos/gems/sculpt/launcher/direct_system_shell index 8356892e47..2cdfea48ea 100644 --- a/repos/gems/sculpt/launcher/direct_system_shell +++ b/repos/gems/sculpt/launcher/direct_system_shell @@ -1,10 +1,10 @@ - - - - + + + + diff --git a/repos/gems/sculpt/launcher/download_debug_info b/repos/gems/sculpt/launcher/download_debug_info index dac7938c24..cb281b0cb6 100644 --- a/repos/gems/sculpt/launcher/download_debug_info +++ b/repos/gems/sculpt/launcher/download_debug_info @@ -1,10 +1,10 @@ - - + + - - + + diff --git a/repos/gems/sculpt/launcher/report_dump b/repos/gems/sculpt/launcher/report_dump index b8bcf2cb03..6f256431a8 100644 --- a/repos/gems/sculpt/launcher/report_dump +++ b/repos/gems/sculpt/launcher/report_dump @@ -1,9 +1,9 @@ - + - + diff --git a/repos/gems/sculpt/launcher/system_shell b/repos/gems/sculpt/launcher/system_shell index 149c4855fb..29646af4ae 100644 --- a/repos/gems/sculpt/launcher/system_shell +++ b/repos/gems/sculpt/launcher/system_shell @@ -1,10 +1,10 @@ - - - - - + + + + + diff --git a/repos/gems/sculpt/launcher/touch_keyboard b/repos/gems/sculpt/launcher/touch_keyboard index 7828ab1f55..9fae38ddf0 100644 --- a/repos/gems/sculpt/launcher/touch_keyboard +++ b/repos/gems/sculpt/launcher/touch_keyboard @@ -2,6 +2,6 @@ - + diff --git a/repos/gems/sculpt/leitzentrale/default b/repos/gems/sculpt/leitzentrale/default index 7e8cfeaa29..c8f5f7632a 100644 --- a/repos/gems/sculpt/leitzentrale/default +++ b/repos/gems/sculpt/leitzentrale/default @@ -190,7 +190,7 @@ - + @@ -200,7 +200,7 @@ - + @@ -287,11 +287,11 @@ - + - + diff --git a/repos/gems/sculpt/leitzentrale/phone b/repos/gems/sculpt/leitzentrale/phone index 01fc680b50..35ebeff5a2 100644 --- a/repos/gems/sculpt/leitzentrale/phone +++ b/repos/gems/sculpt/leitzentrale/phone @@ -107,7 +107,7 @@ - + diff --git a/repos/gems/src/app/depot_download_manager/gen_chroot.cc b/repos/gems/src/app/depot_download_manager/gen_chroot.cc index 11c9604a2e..b9c722a588 100644 --- a/repos/gems/src/app/depot_download_manager/gen_chroot.cc +++ b/repos/gems/src/app/depot_download_manager/gen_chroot.cc @@ -36,7 +36,7 @@ void Depot_download_manager::gen_chroot_start_content(Xml_generator &xml, xml.node("service", [&] () { xml.attribute("name", File_system::Session::service_name()); xml.node("parent", [&] () { - xml.attribute("label", "depot_rw"); }); + xml.attribute("identity", "depot_rw"); }); }); gen_parent_unscoped_rom_route(xml, "chroot"); gen_parent_unscoped_rom_route(xml, "ld.lib.so"); diff --git a/repos/gems/src/app/depot_download_manager/gen_depot_query.cc b/repos/gems/src/app/depot_download_manager/gen_depot_query.cc index 1bdccafa5c..8789c92cdb 100644 --- a/repos/gems/src/app/depot_download_manager/gen_depot_query.cc +++ b/repos/gems/src/app/depot_download_manager/gen_depot_query.cc @@ -30,7 +30,7 @@ void Depot_download_manager::gen_depot_query_start_content(Xml_generator &xml, xml.node("dir", [&] () { xml.attribute("name", "depot"); xml.node("fs", [&] () { - xml.attribute("label", "depot"); }); + xml.attribute("label", "depot -> /"); }); }); }); @@ -119,7 +119,7 @@ void Depot_download_manager::gen_depot_query_start_content(Xml_generator &xml, xml.node("service", [&] () { xml.attribute("name", File_system::Session::service_name()); xml.node("parent", [&] () { - xml.attribute("label", "depot"); }); + xml.attribute("identity", "depot"); }); }); gen_parent_unscoped_rom_route(xml, "depot_query"); gen_parent_unscoped_rom_route(xml, "ld.lib.so"); diff --git a/repos/gems/src/app/depot_download_manager/gen_extract.cc b/repos/gems/src/app/depot_download_manager/gen_extract.cc index 856b1534a9..423da5ed41 100644 --- a/repos/gems/src/app/depot_download_manager/gen_extract.cc +++ b/repos/gems/src/app/depot_download_manager/gen_extract.cc @@ -37,7 +37,7 @@ void Depot_download_manager::gen_extract_start_content(Xml_generator &xml, xml.attribute("name", "public"); xml.node("fs", [&] () { xml.attribute("buffer_size", 144u << 10); - xml.attribute("label", "public"); }); + xml.attribute("label", "public -> /"); }); }); xml.node("dir", [&] () { xml.attribute("name", "depot"); @@ -45,7 +45,7 @@ void Depot_download_manager::gen_extract_start_content(Xml_generator &xml, xml.attribute("name", user); xml.node("fs", [&] () { xml.attribute("buffer_size", 144u << 10); - xml.attribute("label", user_path); }); + xml.attribute("label", Path(user_path, " -> /")); }); }); }); xml.node("dir", [&] () { @@ -75,13 +75,13 @@ void Depot_download_manager::gen_extract_start_content(Xml_generator &xml, xml.node("route", [&] () { xml.node("service", [&] () { xml.attribute("name", File_system::Session::service_name()); - xml.attribute("label", "public"); + xml.attribute("label_prefix", "public ->"); xml.node("parent", [&] () { - xml.attribute("label", "public"); }); + xml.attribute("identity", "public"); }); }); xml.node("service", [&] () { xml.attribute("name", File_system::Session::service_name()); - xml.attribute("label", user_path); + xml.attribute("label_prefix", Path(user_path, " ->")); xml.node("child", [&] () { xml.attribute("name", user_path); }); }); diff --git a/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc b/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc index b028956746..af4102e44b 100644 --- a/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc +++ b/repos/gems/src/app/depot_download_manager/gen_fetchurl.cc @@ -41,7 +41,7 @@ void Depot_download_manager::gen_fetchurl_start_content(Xml_generator &xml, xml.attribute("name", "download"); xml.node("fs", [&] { xml.attribute("buffer_size", 144u << 10); - xml.attribute("label", "download"); }); + xml.attribute("label", "download -> /"); }); }); xml.node("dir", [&] { xml.attribute("name", "dev"); @@ -64,7 +64,7 @@ void Depot_download_manager::gen_fetchurl_start_content(Xml_generator &xml, xml.node("pipe", [&] { }); }); xml.node("fs", [&] { - xml.attribute("label", "tcpip"); }); + xml.attribute("label", "tcpip -> /"); }); }); import.for_each_download([&] (Archive::Path const &path) { @@ -93,15 +93,15 @@ void Depot_download_manager::gen_fetchurl_start_content(Xml_generator &xml, xml.node("route", [&] { xml.node("service", [&] { xml.attribute("name", File_system::Session::service_name()); - xml.attribute("label", "download"); + xml.attribute("label_prefix", "download ->"); xml.node("parent", [&] { - xml.attribute("label", "public_rw"); }); + xml.attribute("identity", "public_rw"); }); }); xml.node("service", [&] { xml.attribute("name", File_system::Session::service_name()); - xml.attribute("label", "tcpip"); + xml.attribute("label_prefix", "tcpip ->"); xml.node("parent", [&] { - xml.attribute("label", "tcpip"); }); + xml.attribute("identity", "tcpip"); }); }); gen_parent_unscoped_rom_route(xml, "fetchurl"); gen_parent_unscoped_rom_route(xml, "ld.lib.so"); diff --git a/repos/gems/src/app/depot_download_manager/gen_verify.cc b/repos/gems/src/app/depot_download_manager/gen_verify.cc index 2762edd46a..bb06135dcc 100644 --- a/repos/gems/src/app/depot_download_manager/gen_verify.cc +++ b/repos/gems/src/app/depot_download_manager/gen_verify.cc @@ -34,13 +34,13 @@ void Depot_download_manager::gen_verify_start_content(Xml_generator &xml, xml.attribute("name", "public"); xml.node("fs", [&] () { xml.attribute("buffer_size", 144u << 10); - xml.attribute("label", "public"); }); + xml.attribute("label", "public -> /"); }); }); xml.node("dir", [&] () { xml.attribute("name", "depot"); xml.node("fs", [&] () { xml.attribute("buffer_size", 144u << 10); - xml.attribute("label", "depot"); }); + xml.attribute("label", "depot -> /"); }); }); xml.node("dir", [&] () { xml.attribute("name", "dev"); @@ -66,15 +66,15 @@ void Depot_download_manager::gen_verify_start_content(Xml_generator &xml, xml.node("route", [&] () { xml.node("service", [&] () { xml.attribute("name", File_system::Session::service_name()); - xml.attribute("label", "public"); + xml.attribute("label_prefix", "public ->"); xml.node("parent", [&] () { - xml.attribute("label", "public"); }); + xml.attribute("identity", "public"); }); }); xml.node("service", [&] () { xml.attribute("name", File_system::Session::service_name()); - xml.attribute("label", "depot"); + xml.attribute("label_prefix", "depot ->"); xml.node("parent", [&] () { - xml.attribute("label", "depot"); }); + xml.attribute("identity", "depot"); }); }); gen_parent_unscoped_rom_route(xml, "verify"); gen_parent_unscoped_rom_route(xml, "ld.lib.so"); diff --git a/repos/gems/src/app/file_vault/README b/repos/gems/src/app/file_vault/README index 3476835875..143e5b8dc0 100644 --- a/repos/gems/src/app/file_vault/README +++ b/repos/gems/src/app/file_vault/README @@ -43,7 +43,7 @@ an example File Vault configuration with default values: ! ! ! -! +! ! ! ! diff --git a/repos/gems/src/app/file_vault/sandbox.h b/repos/gems/src/app/file_vault/sandbox.h index 92d0583bb1..a9cbf1ed12 100644 --- a/repos/gems/src/app/file_vault/sandbox.h +++ b/repos/gems/src/app/file_vault/sandbox.h @@ -44,7 +44,7 @@ namespace File_vault { void gen_child_route(Xml_generator &xml, char const *child, char const *service, char const *label = "") { gen_route(xml, service, label, [&] { gen_named_node(xml, "child", child, [] { }); }); - }; + } void gen_parent_route(Xml_generator &xml, char const *service, char const *src_label = "", char const *dst_label = "") { @@ -77,10 +77,11 @@ namespace File_vault { gen_parent_route(xml, "LOG"); } - void gen_vfs_policy(Xml_generator &xml, char const *label, char const *root, bool writeable) + void gen_vfs_policy(Xml_generator &xml, char const *label_prefix, + char const *root, bool writeable) { xml.node("policy", [&] { - xml.attribute("label", label); + xml.attribute("label_prefix ", label_prefix); xml.attribute("root", root); xml.attribute("writeable", writeable ? "yes" : "no"); }); @@ -186,13 +187,13 @@ namespace File_vault { xml.node("vfs", [&] { xml.node("fs", [&] { xml.attribute("buffer_size", "1M"); - xml.attribute("label", "tresor_fs"); + xml.attribute("label", "tresor_fs -> /"); }); gen_named_node(xml, "tresor_crypto_aes_cbc", "crypto", [] { }); gen_named_node(xml, "dir", "trust_anchor", [&] { xml.node("fs", [&] { xml.attribute("buffer_size", "1M"); - xml.attribute("label", "trust_anchor"); + xml.attribute("label", "trust_anchor -> /"); }); }); gen_named_node(xml, "dir", "dev", [&] { @@ -214,8 +215,8 @@ namespace File_vault { gen_vfs_policy(xml, "sync_to_tresor_vfs_init -> ", "/dev", true); }); xml.node("route", [&] { - gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor"); - gen_parent_route(xml, "File_system", "tresor_fs"); + gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor -> /"); + gen_parent_route(xml, "File_system", "tresor_fs -> /"); gen_common_routes(xml); }); }); @@ -231,7 +232,7 @@ namespace File_vault { gen_named_node(xml, "dir", "storage_dir", [&] { xml.node("fs", [&] { xml.attribute("buffer_size", "1M"); - xml.attribute("label", "storage_dir"); + xml.attribute("label", "storage_dir -> /"); }); }); gen_named_node(xml, "dir", "dev", [&] { @@ -251,7 +252,7 @@ namespace File_vault { gen_vfs_policy(xml, "tresor_vfs -> trust_anchor", "/dev/tresor_trust_anchor", true); }); xml.node("route", [&] { - gen_parent_route(xml, "File_system", "storage_dir"); + gen_parent_route(xml, "File_system", "storage_dir -> /"); gen_common_routes(xml); }); }); @@ -291,7 +292,7 @@ namespace File_vault { xml.attribute("path", path); xml.node("vfs", [&] { gen_named_node(xml, "dir", "tresor", [&] { - xml.node("fs", [&] { xml.attribute("label", "tresor"); }); }); }); + xml.node("fs", [&] { xml.attribute("label", "tresor -> /"); }); }); }); }); xml.node("route", [&] { gen_parent_route(xml, "File_system"); @@ -358,10 +359,10 @@ namespace File_vault { xml.attribute("trust_anchor_dir", "/trust_anchor"); xml.node("vfs", [&] { gen_named_node(xml, "dir", "trust_anchor", [&] { - xml.node("fs", [&] { xml.attribute("label", "trust_anchor"); }); }); }); + xml.node("fs", [&] { xml.attribute("label", "trust_anchor -> /"); }); }); }); }); xml.node("route", [&] { - gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor"); + gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor -> /"); gen_common_routes(xml); }); }); @@ -382,12 +383,12 @@ namespace File_vault { xml.node("fs", [&] { xml.attribute("buffer_size", "1M"); }); gen_named_node(xml, "tresor_crypto_aes_cbc", "crypto", [] { }); gen_named_node(xml, "dir", "trust_anchor", [&] { - xml.node("fs", [&] { xml.attribute("label", "trust_anchor"); }); }); + xml.node("fs", [&] { xml.attribute("label", "trust_anchor -> /"); }); }); }); sb_config.generate_xml(xml); }); xml.node("route", [&] { - gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor"); + gen_child_route(xml, "tresor_trust_anchor_vfs", "File_system", "trust_anchor -> /"); gen_parent_route(xml, "File_system"); gen_common_routes(xml); }); diff --git a/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc b/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc index 9126cf5727..2346ab20a1 100644 --- a/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc +++ b/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.cc @@ -200,7 +200,7 @@ void Distant_runtime::gen_start_nodes(Xml_generator &xml) const xml.node("dir", [&] { xml.attribute("name", "fonts"); xml.node("fs", [&] { - xml.attribute("label", "fonts"); + xml.attribute("label", "fonts -> /"); }); }); }); @@ -234,9 +234,9 @@ void Distant_runtime::gen_start_nodes(Xml_generator &xml) const }); gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "fonts"); + xml.attribute("label_prefix", "fonts ->"); xml.node("parent", [&] { - xml.attribute("label", "leitzentrale -> fonts"); }); }); + xml.attribute("identity", "leitzentrale -> fonts"); }); }); }); }); } diff --git a/repos/gems/src/app/sculpt_manager/model/file_browser_state.h b/repos/gems/src/app/sculpt_manager/model/file_browser_state.h index b35d1f6531..e4466612a5 100644 --- a/repos/gems/src/app/sculpt_manager/model/file_browser_state.h +++ b/repos/gems/src/app/sculpt_manager/model/file_browser_state.h @@ -105,11 +105,11 @@ struct Sculpt::File_browser_state : Noncopyable if (browsed_fs == "config") { xml.node("parent", [&] { - xml.attribute("label", "config"); }); + xml.attribute("identity", "config"); }); } else if (browsed_fs == "report") { xml.node("parent", [&] { - xml.attribute("label", "report"); }); + xml.attribute("identity", "report"); }); } else { xml.node("child", [&] { @@ -181,19 +181,19 @@ struct Sculpt::File_browser_state : Noncopyable xml.attribute("label", "leitzentrale -> editor"); }); }); gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "fonts"); + xml.attribute("label_prefix", "fonts ->"); xml.node("parent", [&] { - xml.attribute("label", "leitzentrale -> fonts"); }); }); + xml.attribute("identity", "leitzentrale -> fonts"); }); }); gen_service_node<::File_system::Session>(xml, [&] { if (browsed_fs == "config") { xml.node("parent", [&] { - xml.attribute("label", "config"); }); + xml.attribute("identity", "config"); }); } else if (browsed_fs == "report") { xml.node("parent", [&] { - xml.attribute("label", "report"); }); + xml.attribute("identity", "report"); }); } else { xml.node("child", [&] { diff --git a/repos/gems/src/app/sculpt_manager/model/route.h b/repos/gems/src/app/sculpt_manager/model/route.h index 3bcc3cd602..485f765869 100644 --- a/repos/gems/src/app/sculpt_manager/model/route.h +++ b/repos/gems/src/app/sculpt_manager/model/route.h @@ -146,10 +146,17 @@ struct Sculpt::Route : List_model::Element if (required_label.valid()) { - if (selected_service->match_label == Service::Match_label::LAST) + switch (selected_service->match_label) { + case Service::Match_label::LAST: xml.attribute("label_last", required_label); - else + break; + case Service::Match_label::FS: + xml.attribute("label_prefix", Label(required_label, " ->")); + break; + case Service::Match_label::EXACT: xml.attribute("label", required_label); + break; + } } selected_service->gen_xml(xml); diff --git a/repos/gems/src/app/sculpt_manager/model/runtime_config.h b/repos/gems/src/app/sculpt_manager/model/runtime_config.h index 8f8fc915b2..8893f1f57e 100644 --- a/repos/gems/src/app/sculpt_manager/model/runtime_config.h +++ b/repos/gems/src/app/sculpt_manager/model/runtime_config.h @@ -312,8 +312,8 @@ class Sculpt::Runtime_config _event { _r, Type::EVENT, "filtered input events" }, _lz_capture{ _r, Type::CAPTURE, "management GUI", "leitzentrale" }, _capture { _r, Type::CAPTURE, "system GUI", "global" }, - _config_fs { _r, Type::FILE_SYSTEM, "writeable system configuration", "config" }, - _report_fs { _r, Type::FILE_SYSTEM, "read-only system reports", "report" }, + _config_fs { _r, Type::FILE_SYSTEM, "writeable system configuration", "config", Service::Match_label::FS }, + _report_fs { _r, Type::FILE_SYSTEM, "read-only system reports", "report", Service::Match_label::FS }, _capslock { _r, Type::ROM, "global capslock state", "capslock" }, _vimrc { _r, Type::ROM, "default vim configuration", "config -> vimrc" }, _fonts { _r, Type::ROM, "system font configuration", "config -> managed/fonts" }, diff --git a/repos/gems/src/app/sculpt_manager/model/service.h b/repos/gems/src/app/sculpt_manager/model/service.h index 39d316e5e9..580966d1be 100644 --- a/repos/gems/src/app/sculpt_manager/model/service.h +++ b/repos/gems/src/app/sculpt_manager/model/service.h @@ -30,13 +30,13 @@ struct Sculpt::Service RM, IO_MEM, IO_PORT, IRQ, REPORT, ROM, TERMINAL, TRACE, USB, RTC, I2C, PLATFORM, PIN_STATE, PIN_CONTROL, VM, PD, UPLINK, PLAY, RECORD, UNDEFINED }; - enum class Match_label { EXACT, LAST }; + enum class Match_label { EXACT, LAST, FS }; Start_name server { }; /* invalid for parent service */ Type type; Label label; Info info; - Match_label match_label { Match_label::EXACT }; + Match_label match_label; /** * Return name attribute value of node @@ -81,13 +81,18 @@ struct Sculpt::Service * Constructor for child service */ Service(Start_name const &server, Type type, Label const &label) - : server(server), type(type), label(label), info(Subst("_", " ", server)) { } + : + server(server), type(type), label(label), info(Subst("_", " ", server)), + match_label(type == Type::FILE_SYSTEM ? Match_label::FS : Match_label::EXACT) + { } /** * Constructor for default_fs_rw */ Service(Start_name const &server, Type type, Label const &label, Info const &info) - : server(server), type(type), label(label), info(info) { } + : + server(server), type(type), label(label), info(info), match_label(Match_label::FS) + { } /** * Constructor for parent service @@ -109,6 +114,9 @@ struct Sculpt::Service if (label.valid() && match_label == Match_label::EXACT) xml.attribute("label", label); + + if (label.valid() && match_label == Match_label::FS) + xml.attribute("identity", label); }); } }; diff --git a/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc b/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc index 675034521d..d4266fa04a 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/fs_tool.cc @@ -39,8 +39,8 @@ void Sculpt::gen_fs_tool_start_content(Xml_generator &xml, Fs_tool_version versi xml.attribute("buffer_size", buffer_size); }); }); }; - gen_fs("rw", "target", "1M"); - gen_fs("config", "config", "128K"); + gen_fs("rw", "target -> /", "1M"); + gen_fs("config", "config -> /", "128K"); }); operations.gen_fs_tool_config(xml); @@ -49,7 +49,7 @@ void Sculpt::gen_fs_tool_start_content(Xml_generator &xml, Fs_tool_version versi xml.node("route", [&] { gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "target"); + xml.attribute("label_prefix", "target ->"); gen_named_node(xml, "child", "default_fs_rw"); }); gen_parent_rom_route(xml, "fs_tool"); @@ -61,7 +61,7 @@ void Sculpt::gen_fs_tool_start_content(Xml_generator &xml, Fs_tool_version versi gen_parent_route (xml); gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "config"); - xml.node("parent", [&] { xml.attribute("label", "config"); }); }); + xml.attribute("label_prefix", "config ->"); + xml.node("parent", [&] { xml.attribute("identity", "config"); }); }); }); } diff --git a/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc index 7f1fe24ed1..b87562d54f 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/inspect_view.cc @@ -80,7 +80,7 @@ static void gen_vfs_start(Xml_generator &xml, gen_named_node(xml, "dir", label, [&] { xml.node("fs", [&] { xml.attribute("buffer_size", 272u << 10); - xml.attribute("label", label); }); }); }; + xml.attribute("label", prefixed_label(label, String<8>("/"))); }); }); }; fs_dir("config"); fs_dir("report"); @@ -111,13 +111,13 @@ static void gen_vfs_start(Xml_generator &xml, xml.node("route", [&] { gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "config"); - xml.node("parent", [&] { xml.attribute("label", "config"); }); + xml.attribute("label_prefix", "config ->"); + xml.node("parent", [&] { xml.attribute("identity", "config"); }); }); gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "report"); - xml.node("parent", [&] { xml.attribute("label", "report"); }); + xml.attribute("label_prefix", "report ->"); + xml.node("parent", [&] { xml.attribute("identity", "report"); }); }); gen_service_node(xml, [&] { @@ -242,18 +242,13 @@ void Sculpt::gen_inspect_view(Xml_generator &xml, xml.node("route", [&] { gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "config"); - xml.node("parent", [&] { xml.attribute("label", "config"); }); + xml.attribute("label_prefix", "config ->"); + xml.node("parent", [&] { xml.attribute("identity", "config"); }); }); gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "report"); - xml.node("parent", [&] { xml.attribute("label", "report"); }); - }); - - gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "report"); - xml.node("parent", [&] { xml.attribute("label", "report"); }); + xml.attribute("label_prefix", "report ->"); + xml.node("parent", [&] { xml.attribute("identity", "report"); }); }); gen_parent_rom_route(xml, "ld.lib.so"); @@ -283,16 +278,13 @@ void Sculpt::gen_inspect_view(Xml_generator &xml, for_each_inspected_storage_target(devices, [&] (Storage_target const &target) { gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label_last", target.label()); - gen_named_node(xml, "child", target.fs()); - }); - }); + xml.attribute("label_prefix", Session_label("vfs -> ", target.label(), " ->")); + gen_named_node(xml, "child", target.fs()); }); }); if (ram_fs_state.inspected) gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label_last", "ram"); - gen_named_node(xml, "child", "ram_fs"); - }); + xml.attribute("label_prefix", "vfs -> ram ->"); + gen_named_node(xml, "child", "ram_fs"); }); gen_service_node(xml, [&] { xml.node("parent", [&] { diff --git a/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc b/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc index 166f14a740..7943d2365a 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/launcher_query.cc @@ -49,6 +49,6 @@ void Sculpt::gen_launcher_query_start_content(Xml_generator &xml) gen_service_node<::File_system::Session>(xml, [&] { xml.node("parent", [&] { - xml.attribute("label", "config"); }); }); + xml.attribute("identity", "config"); }); }); }); } diff --git a/repos/gems/src/app/sculpt_manager/runtime/prepare.cc b/repos/gems/src/app/sculpt_manager/runtime/prepare.cc index 26917614e6..da376c99fb 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/prepare.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/prepare.cc @@ -58,10 +58,10 @@ void Sculpt::gen_prepare_vfs_start(Xml_generator &xml) }); gen_named_node(xml, "dir", "rw", [&] { - xml.node("fs", [&] { xml.attribute("label", "target"); }); }); + xml.node("fs", [&] { xml.attribute("label", "target -> /"); }); }); gen_named_node(xml, "dir", "config", [&] { - xml.node("fs", [&] { xml.attribute("label", "config"); }); }); + xml.node("fs", [&] { xml.attribute("label", "config -> /"); }); }); gen_named_node(xml, "rom", "VERSION"); }); @@ -184,7 +184,7 @@ void Sculpt::gen_prepare_start_content(Xml_generator &xml, Prepare_version versi xml.node("route", [&] { gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "vfs -> target"); + xml.attribute("label_prefix", "vfs -> target ->"); gen_named_node(xml, "child", "default_fs_rw"); }); gen_parent_rom_route(xml, "ld.lib.so"); @@ -203,7 +203,7 @@ void Sculpt::gen_prepare_start_content(Xml_generator &xml, Prepare_version versi gen_parent_route (xml); gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", "vfs -> config"); - xml.node("parent", [&] { xml.attribute("label", "config"); }); }); + xml.attribute("label_prefix", "vfs -> config ->"); + xml.node("parent", [&] { xml.attribute("identity", "config"); }); }); }); } diff --git a/repos/gems/src/app/sculpt_manager/runtime/update.cc b/repos/gems/src/app/sculpt_manager/runtime/update.cc index 98b8947599..3a0c497f99 100644 --- a/repos/gems/src/app/sculpt_manager/runtime/update.cc +++ b/repos/gems/src/app/sculpt_manager/runtime/update.cc @@ -24,14 +24,14 @@ void Sculpt::gen_update_start_content(Xml_generator &xml) xml.node("route", [&] { using Label = String<32>; - auto gen_fs = [&] (Label const &label, Label const &server) { + auto gen_fs = [&] (Label const &label_prefix, Label const &server) { gen_service_node<::File_system::Session>(xml, [&] { - xml.attribute("label", label); + xml.attribute("label_prefix", label_prefix); gen_named_node(xml, "child", server); }); }; /* connect file-system sessions to chroot instances */ - gen_fs("depot", "depot_rw"); - gen_fs("public", "public_rw"); + gen_fs("depot ->", "depot_rw"); + gen_fs("public ->", "public_rw"); gen_parent_rom_route(xml, "ld.lib.so"); gen_parent_rom_route(xml, "vfs.lib.so"); diff --git a/repos/gems/src/lib/dialog/sandboxed_runtime.cc b/repos/gems/src/lib/dialog/sandboxed_runtime.cc index d8e204ae14..cfdf1e30a2 100644 --- a/repos/gems/src/lib/dialog/sandboxed_runtime.cc +++ b/repos/gems/src/lib/dialog/sandboxed_runtime.cc @@ -316,9 +316,9 @@ void Sandboxed_runtime::Menu_view_state::gen_start_node(Xml_generator &xml, View xml.node("service", [&] () { xml.attribute("name", "File_system"); - xml.attribute("label", "fonts"); + xml.attribute("label_prefix", "fonts ->"); xml.node("parent", [&] () { - xml.attribute("label", "fonts"); }); + xml.attribute("identity", "fonts"); }); }); auto parent_route = [&] (auto const &service) diff --git a/repos/libports/recipes/pkg/gcov/runtime b/repos/libports/recipes/pkg/gcov/runtime index 8e4edecf46..9f8b2354fd 100644 --- a/repos/libports/recipes/pkg/gcov/runtime +++ b/repos/libports/recipes/pkg/gcov/runtime @@ -39,8 +39,8 @@ - - + + diff --git a/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime b/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime index 4b836ba4f2..0b14a245c7 100644 --- a/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime +++ b/repos/libports/recipes/pkg/test-libc_fifo_pipe/runtime @@ -39,8 +39,8 @@ - - + + @@ -70,8 +70,8 @@ - - + + @@ -85,7 +85,7 @@ - + @@ -118,10 +118,10 @@ - + - + diff --git a/repos/libports/recipes/raw/qt5_textedit/textedit.config b/repos/libports/recipes/raw/qt5_textedit/textedit.config index de37861a9f..b088548a20 100644 --- a/repos/libports/recipes/raw/qt5_textedit/textedit.config +++ b/repos/libports/recipes/raw/qt5_textedit/textedit.config @@ -5,7 +5,7 @@ 2018-01-01 00:01 - + diff --git a/repos/libports/src/app/extract/README b/repos/libports/src/app/extract/README index ccc6ebdd62..50cb9b774e 100644 --- a/repos/libports/src/app/extract/README +++ b/repos/libports/src/app/extract/README @@ -10,8 +10,8 @@ multiple archives one at a time: ! ! -! -! +! +! ! ! ! diff --git a/repos/libports/src/app/fetchurl/README b/repos/libports/src/app/fetchurl/README index 9b79cc173d..0c8ee9d3d9 100644 --- a/repos/libports/src/app/fetchurl/README +++ b/repos/libports/src/app/fetchurl/README @@ -46,7 +46,7 @@ Use the socket plugin of an other vfs (store file in a directory): ! 01234567890123456789 ! ! -! +! ! ! diff --git a/repos/libports/src/lib/gcov/libc/libc.cc b/repos/libports/src/lib/gcov/libc/libc.cc index d33f660954..aeb723b625 100644 --- a/repos/libports/src/lib/gcov/libc/libc.cc +++ b/repos/libports/src/lib/gcov/libc/libc.cc @@ -52,7 +52,7 @@ struct Gcov_env * VFS. */ - File_system::Connection fs { env, fs_alloc, "gcov_data" }; + File_system::Connection fs { env, fs_alloc, "gcov_data -> /" }; seek_off_t seek_offset { 0 }; Io_signal_handler _fs_signal_handler { diff --git a/repos/os/include/file_system_session/connection.h b/repos/os/include/file_system_session/connection.h index defb0b16ef..d588943677 100644 --- a/repos/os/include/file_system_session/connection.h +++ b/repos/os/include/file_system_session/connection.h @@ -58,22 +58,19 @@ struct File_system::Connection : Genode::Connection, Session_client * * \param tx_buffer_alloc allocator used for managing the * transmission buffer - * \param label session label - * \param root root directory of session + * \param label session label and client-preferred root directory * \param writeable session is writeable * \param tx_buf_size size of transmission buffer in bytes */ Connection(Genode::Env &env, Genode::Range_allocator &tx_block_alloc, - Label const &label = Label(), - char const *root = "/", + Label const &label = Label("/"), bool writeable = true, size_t tx_buf_size = DEFAULT_TX_BUF_SIZE) : Genode::Connection(env, label, Ram_quota { 8*1024*sizeof(long) + tx_buf_size }, - Args("root=\"", root, "\", " - "writeable=", writeable, ", " + Args("writeable=", writeable, ", " "tx_buf_size=", tx_buf_size)), Session_client(cap(), tx_block_alloc, env.rm()) { } diff --git a/repos/os/recipes/pkg/cpu_balancer_config/runtime b/repos/os/recipes/pkg/cpu_balancer_config/runtime index ac9172cadc..165946aa9f 100644 --- a/repos/os/recipes/pkg/cpu_balancer_config/runtime +++ b/repos/os/recipes/pkg/cpu_balancer_config/runtime @@ -34,7 +34,7 @@ - + @@ -43,7 +43,7 @@ - + diff --git a/repos/os/run/internet_checksum.run b/repos/os/run/internet_checksum.run index cf726460b7..418c0040c6 100644 --- a/repos/os/run/internet_checksum.run +++ b/repos/os/run/internet_checksum.run @@ -47,7 +47,7 @@ install_config { - + diff --git a/repos/os/run/lx_fs_import.run b/repos/os/run/lx_fs_import.run index 7f00743094..39d7859d27 100644 --- a/repos/os/run/lx_fs_import.run +++ b/repos/os/run/lx_fs_import.run @@ -45,7 +45,7 @@ install_config { - + diff --git a/repos/os/run/platform.run b/repos/os/run/platform.run index 16592222ea..1f2120359f 100644 --- a/repos/os/run/platform.run +++ b/repos/os/run/platform.run @@ -49,8 +49,8 @@ install_config { - - + + diff --git a/repos/os/src/lib/vfs/fs_file_system.h b/repos/os/src/lib/vfs/fs_file_system.h index 022d926d2a..2d25cf153a 100644 --- a/repos/os/src/lib/vfs/fs_file_system.h +++ b/repos/os/src/lib/vfs/fs_file_system.h @@ -34,9 +34,6 @@ class Vfs::Fs_file_system : public File_system, private Remote_io using Label_string = Genode::String<64>; Label_string _label; - using Root_string = Genode::String<::File_system::MAX_NAME_LEN>; - Root_string _root; - ::File_system::Connection _fs; bool _write_would_block = false; @@ -568,13 +565,17 @@ class Vfs::Fs_file_system : public File_system, private Remote_io Fs_file_system(Vfs::Env &env, Genode::Xml_node config) : _env(env), - _label(config.attribute_value("label", Label_string())), - _root( config.attribute_value("root", Root_string())), + _label(config.attribute_value("label", Label_string("/"))), _fs(_env.env(), _fs_packet_alloc, - _label.string(), _root.string(), + _label, config.attribute_value("writeable", true), buffer_size(config)) { + if (config.has_attribute("root")) { + Genode::warning("vfs: node uses deprecated 'root' attribute."); + Genode::warning(" Append the root dir to the label instead."); + } + _fs.sigh(_signal_handler); } diff --git a/repos/os/src/server/cached_fs_rom/main.cc b/repos/os/src/server/cached_fs_rom/main.cc index 645ae46832..3f87a908b7 100644 --- a/repos/os/src/server/cached_fs_rom/main.cc +++ b/repos/os/src/server/cached_fs_rom/main.cc @@ -290,7 +290,7 @@ struct Cached_fs_rom::Main final : Genode::Session_request_handler Heap heap { env.pd(), env.rm() }; Allocator_avl fs_tx_block_alloc { &heap }; - File_system::Connection fs { env, fs_tx_block_alloc, "", "/", false, 4*1024*1024 }; + File_system::Connection fs { env, fs_tx_block_alloc, "/", false, 4*1024*1024 }; Session_requests_rom session_requests { env, *this }; diff --git a/repos/os/src/server/chroot/component.cc b/repos/os/src/server/chroot/component.cc index 2bb97037c6..1b0084b50b 100644 --- a/repos/os/src/server/chroot/component.cc +++ b/repos/os/src/server/chroot/component.cc @@ -64,7 +64,7 @@ struct Chroot::Main * File-system session for creating new chroot directories */ File_system::Connection fs { - env, fs_tx_block_alloc, "", "/", true, 1 }; + env, fs_tx_block_alloc, "/", true, 1 }; Attached_rom_dataspace session_requests { env, "session_requests" }; @@ -118,7 +118,7 @@ struct Chroot::Main /* Use a chroot path from policy and label sub-directories */ Prefix const prefix = policy.attribute_value("path_prefix", Prefix()); root_path.import(prefix.string()); - root_path.append(path_from_label(label.string()).string()); + root_path.append(path_from_label(label.prefix().string()).string()); } else if (policy.has_attribute("path")) { /* Use a chroot path from policy */ root_path.import(policy.attribute_value("path", Prefix()).string()); @@ -127,15 +127,24 @@ struct Chroot::Main root_path = path_from_label(label.string()); } - /* extract and append the session argument */ + /* append client-provided path */ { - char tmp[PATH_MAX_LEN]; - Arg_string::find_arg(args.string(), "root").string(tmp, sizeof(tmp), "/"); - root_path.append_element(tmp); + Session_label const client_root_path = label.last_element(); + bool root_path_valid = true; + if (client_root_path.string()[0] != '/') { + warning(label, ": last label element should start with /"); + root_path_valid = false; + } + if (client_root_path.string()[min(1ul, client_root_path.length()) - 1] != '/') { + warning(label, ": last label element should end with /"); + root_path_valid = false; + } + if (!root_path_valid) + throw Service_denied(); + root_path.append(client_root_path.string()); + root_path.remove_trailing('/'); } - root_path.remove_trailing('/'); - char const *new_root = root_path.base(); using namespace File_system; @@ -179,7 +188,11 @@ struct Chroot::Main Arg_string::set_arg(new_args, ARGS_MAX_LEN, "writeable", writeable); } - Arg_string::set_arg_string(new_args, ARGS_MAX_LEN, "root", new_root); + /* replace last label element by new root path */ + Session_label const rewritten_label = + prefixed_label(label.prefix(), Session_label(root_path.string(), "/")); + + Arg_string::set_arg_string(new_args, ARGS_MAX_LEN, "label", rewritten_label.string()); return env.session("File_system", id, new_args, affinity); } diff --git a/repos/os/src/server/vfs/main.cc b/repos/os/src/server/vfs/main.cc index 5874ea161b..edc0b898f2 100644 --- a/repos/os/src/server/vfs/main.cc +++ b/repos/os/src/server/vfs/main.cc @@ -923,13 +923,20 @@ class Vfs_server::Root : public Genode::Root_component, /* apply client's root offset. */ { - char tmp[MAX_PATH_LEN] { }; - Arg_string::find_arg(args, "root").string(tmp, sizeof(tmp), "/"); - if (Genode::strcmp("/", tmp, sizeof(tmp))) { - session_root.append("/"); - session_root.append(tmp); - session_root.remove_trailing('/'); + Session_label const client_root_path = label.last_element(); + bool root_path_valid = true; + if (client_root_path.string()[0] != '/') { + warning(label, ": last label element should start with /"); + root_path_valid = false; } + if (client_root_path.string()[min(1ul, client_root_path.length()) - 1] != '/') { + warning(label, ": last label element should end with /"); + root_path_valid = false; + } + if (!root_path_valid) + throw Service_denied(); + session_root.append(client_root_path.string()); + session_root.remove_trailing('/'); } /* check if the session root exists */ diff --git a/repos/os/src/server/vfs_block/README b/repos/os/src/server/vfs_block/README index 3eb8e2c514..088ab3168f 100644 --- a/repos/os/src/server/vfs_block/README +++ b/repos/os/src/server/vfs_block/README @@ -14,14 +14,14 @@ component: ! ! ! -! +! ! ! ! ! ! -! +! ! ! ! diff --git a/repos/os/src/test/fs_packet/component.cc b/repos/os/src/test/fs_packet/component.cc index 7dea4fcc37..7e1dca94d8 100644 --- a/repos/os/src/test/fs_packet/component.cc +++ b/repos/os/src/test/fs_packet/component.cc @@ -36,7 +36,7 @@ struct Fs_packet::Main Heap _heap { _env.pd(), _env.rm() }; Allocator_avl _avl_alloc { &_heap }; - File_system::Connection _fs { _env, _avl_alloc, "", "/", false, 4<<10 }; + File_system::Connection _fs { _env, _avl_alloc, "/", false, 4<<10 }; File_system::Session::Tx::Source &_tx { *_fs.tx() }; diff --git a/repos/pc/sculpt/deploy/goa_testbed b/repos/pc/sculpt/deploy/goa_testbed index 9d21432006..5ff57a5542 100644 --- a/repos/pc/sculpt/deploy/goa_testbed +++ b/repos/pc/sculpt/deploy/goa_testbed @@ -19,7 +19,7 @@ - + @@ -62,7 +62,7 @@ - + diff --git a/repos/ports/recipes/pkg/lighttpd/runtime b/repos/ports/recipes/pkg/lighttpd/runtime index 957f967571..a7c545b811 100644 --- a/repos/ports/recipes/pkg/lighttpd/runtime +++ b/repos/ports/recipes/pkg/lighttpd/runtime @@ -36,7 +36,7 @@ dir-listing.activate = "enable" - + - - + + diff --git a/repos/ports/recipes/pkg/vbox5-nova-capture/runtime b/repos/ports/recipes/pkg/vbox5-nova-capture/runtime index bfab277a2c..649ed4d9a4 100644 --- a/repos/ports/recipes/pkg/vbox5-nova-capture/runtime +++ b/repos/ports/recipes/pkg/vbox5-nova-capture/runtime @@ -68,8 +68,8 @@ - - + + diff --git a/repos/ports/recipes/pkg/vbox6-capture/runtime b/repos/ports/recipes/pkg/vbox6-capture/runtime index d1bf30921c..de481c55ec 100644 --- a/repos/ports/recipes/pkg/vbox6-capture/runtime +++ b/repos/ports/recipes/pkg/vbox6-capture/runtime @@ -29,10 +29,10 @@ - + - + diff --git a/repos/ports/recipes/pkg/vbox6/runtime b/repos/ports/recipes/pkg/vbox6/runtime index cea2713bcb..ec6a157376 100644 --- a/repos/ports/recipes/pkg/vbox6/runtime +++ b/repos/ports/recipes/pkg/vbox6/runtime @@ -28,10 +28,10 @@ - + - + diff --git a/repos/ports/recipes/raw/gdb_x86/gdb.config b/repos/ports/recipes/raw/gdb_x86/gdb.config index 439f655b79..1c80e7445e 100644 --- a/repos/ports/recipes/raw/gdb_x86/gdb.config +++ b/repos/ports/recipes/raw/gdb_x86/gdb.config @@ -41,7 +41,7 @@ - + @@ -56,10 +56,10 @@ - - + + - + diff --git a/repos/ports/recipes/raw/system_shell/system_shell.config b/repos/ports/recipes/raw/system_shell/system_shell.config index 5296d1bc7b..928428d5b2 100644 --- a/repos/ports/recipes/raw/system_shell/system_shell.config +++ b/repos/ports/recipes/raw/system_shell/system_shell.config @@ -22,7 +22,7 @@ - + @@ -55,9 +55,9 @@ - - - + + + diff --git a/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config b/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config index 2a1bd27999..834a7dd0d6 100644 --- a/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config +++ b/repos/ports/recipes/raw/vbox5-nova-sculpt/init.config @@ -28,15 +28,15 @@ - + - - + + diff --git a/repos/ports/run/vbox_share.inc b/repos/ports/run/vbox_share.inc index 1305e8feae..cde1b72ffd 100644 --- a/repos/ports/run/vbox_share.inc +++ b/repos/ports/run/vbox_share.inc @@ -207,8 +207,8 @@ set config_of_app { - - + + @@ -222,10 +222,10 @@ set config_of_app { - + - + @@ -342,11 +342,11 @@ append config_of_app { } append_if [expr $use_ram_fs] config_of_app { - } + } append config_of_app { - - + + @@ -354,15 +354,15 @@ append config_of_app { } append_if [expr $use_ram_fs] config_of_app { - + } append config_of_app { - + - + diff --git a/repos/ports/run/vbox_win.inc b/repos/ports/run/vbox_win.inc index 309f5078da..04a417684b 100644 --- a/repos/ports/run/vbox_win.inc +++ b/repos/ports/run/vbox_win.inc @@ -276,7 +276,7 @@ for { set i 1} { $i <= $use_vms } { incr i} { } append_if [expr $use_ram_fs] config_of_app { - } + } append config_of_app " " @@ -295,7 +295,7 @@ for { set i 1} { $i <= $use_vms } { incr i} { } append_if [expr $use_ram_fs] config_of_app { - } + } append_if [expr $use_rumpfs] config_of_app { }