diff --git a/run/chroot.run b/run/chroot.run index cf56009..21daa6e 100644 --- a/run/chroot.run +++ b/run/chroot.run @@ -63,9 +63,8 @@ set config { - - - + + @@ -78,9 +77,8 @@ set config { - - - + + @@ -93,9 +91,8 @@ set config { - - - + + diff --git a/run/log_tee.run b/run/log_tee.run index a5f1c04..c438692 100644 --- a/run/log_tee.run +++ b/run/log_tee.run @@ -1,12 +1,16 @@ -build "core init server/log_tee test/printf" +build "core init server/log_tee test/log" create_boot_directory install_config { + + + + @@ -17,7 +21,7 @@ install_config { - + @@ -26,8 +30,8 @@ install_config { } -build_boot_image "core ld.lib.so init log_tee test-printf" +build_boot_image "core ld.lib.so init log_tee test-log" append qemu_args "-nographic -m 64" -run_genode_until {child "test-printf" exited with exit value 0} 10 +run_genode_until {\[test-log\] Test done.} 10 diff --git a/run/lz_rom_noux.run b/run/lz_rom_noux.run index 70b50dd..9872d33 100644 --- a/run/lz_rom_noux.run +++ b/run/lz_rom_noux.run @@ -1,9 +1,12 @@ +set sha256sum [check_installed sha256sum] + build { core init drivers/timer lib/libc_noux noux-pkg/coreutils noux/minimal + proxy/rom_verify server/log_terminal server/lz_rom } @@ -12,9 +15,12 @@ build { exec sh -c "[cross_dev_prefix]strip bin/coreutils/bin/*" exec tar cfv bin/coreutils.tar -h -C bin/coreutils . +# get the hash of the tarball to check against after decompression +set tar_digest [lindex [exec $sha256sum bin/coreutils.tar] 0] + create_boot_directory -install_config { +append config { @@ -47,6 +53,19 @@ install_config { + + + + } +append config "" +append config { + + + + + + + @@ -55,7 +74,7 @@ install_config { - + @@ -63,6 +82,8 @@ install_config { } +install_config $config + # Lzip the coreutils tarball exec lzip --force --keep bin/coreutils.tar @@ -78,6 +99,8 @@ build_boot_image { log_terminal lz_rom noux + rom_verify + stdcxx.lib.so timer } diff --git a/run/rom_fallback.run b/run/rom_fallback.run index 7b01a29..76e68eb 100644 --- a/run/rom_fallback.run +++ b/run/rom_fallback.run @@ -63,9 +63,8 @@ append config { - - - + + diff --git a/run/rom_verify.run b/run/rom_verify.run index f22864f..4514e0a 100644 --- a/run/rom_verify.run +++ b/run/rom_verify.run @@ -15,8 +15,8 @@ create_boot_directory set sha256sum [check_installed sha256sum] -set rom_file bin/test-log -set test_digest [exec $sha256sum $rom_file] +set ld_digest [lindex [exec $sha256sum bin/ld-linux.lib.so] 0] +set test_digest [lindex [exec $sha256sum bin/test-log] 0] append config { @@ -35,36 +35,21 @@ append config { - + } -append config " test-log\" sha256=\"$test_digest\"/>" +append config "" +append config "" append config { - - + + - + - - - + - - - - - - - - - - - - - - } diff --git a/src/proxy/rom_verify/main.cc b/src/proxy/rom_verify/main.cc index b6cfb24..b0b7466 100644 --- a/src/proxy/rom_verify/main.cc +++ b/src/proxy/rom_verify/main.cc @@ -215,11 +215,10 @@ void Rom_hash::Main::handle_session_request(Xml_node request) server_id_space.apply(server_id, [&] (Session &session) { Genode::size_t ram_quota = request.attribute_value("ram_quota", 0UL); - char buf[64]; - Genode::snprintf(buf, sizeof(buf), "ram_quota=%ld", ram_quota); + String<64> args("ram_quota=", ram_quota); // XXX handle Root::Invalid_args - env.upgrade(session.client_id.id(), buf); + env.upgrade(session.client_id.id(), args.string()); env.parent().session_response(server_id, Parent::SESSION_OK); }); } diff --git a/src/server/chroot/component.cc b/src/server/chroot/component.cc index 32a1a57..2ee9d4b 100644 --- a/src/server/chroot/component.cc +++ b/src/server/chroot/component.cc @@ -243,11 +243,10 @@ void Chroot::Main::handle_session_request(Xml_node request) size_t ram_quota = request.attribute_value("ram_quota", 0UL); - char buf[64]; - snprintf(buf, sizeof(buf), "ram_quota=%ld", ram_quota); + String<64> args("ram_quota=", ram_quota); // XXX handle Root::Invalid_args - env.upgrade(session.client_id.id(), buf); + env.upgrade(session.client_id.id(), args.string()); env.parent().session_response(server_id, Parent::SESSION_OK); }); } diff --git a/src/server/log_tee/component.cc b/src/server/log_tee/component.cc index b7ce06c..f464419 100644 --- a/src/server/log_tee/component.cc +++ b/src/server/log_tee/component.cc @@ -18,7 +18,6 @@ #include #include #include -#include #include namespace Log_tee { @@ -44,13 +43,12 @@ class Log_tee::Session_component : public Rpc_object { } } _log; - char _prefix[Session_label::capacity()+3]; + Genode::String _prefix; public: Session_component(Env &env, Session_label const &label, char const *args) - : _log(env, args) - { snprintf(_prefix, sizeof(_prefix), "[%s] ", label.string()); } + : _log(env, args), _prefix("[", label.string(), "] ") { } size_t write(Log_session::String const &msg) override { @@ -58,7 +56,7 @@ class Log_tee::Session_component : public Rpc_object size_t n = _log.write(msg); /* write to our own log session */ - log(Cstring(_prefix), msg.string()); + log(_prefix, msg.string()); return n; } diff --git a/src/server/lz_rom/main.cc b/src/server/lz_rom/main.cc index a1998b0..56a1f14 100644 --- a/src/server/lz_rom/main.cc +++ b/src/server/lz_rom/main.cc @@ -36,13 +36,15 @@ using namespace Genode; namespace Lz_rom { using namespace Genode; + typedef Session_state::Args Args; + typedef String Lz_path; + struct Session; struct Main; - typedef Session_state::Args Args; - struct File_error { }; struct Decompression_error { }; + } @@ -57,7 +59,7 @@ struct Lz_rom::Session : Session(Id_space &server_space, Parent::Server::Id server_id, Libc::Env &env, Genode::Allocator &alloc, - Session_label const &label, + Lz_path const &path, LZ_Decoder *decoder); Attached_ram_dataspace ram_ds; @@ -79,7 +81,7 @@ struct Lz_rom::Session : Lz_rom::Session::Session(Id_space &server_space, Parent::Server::Id server_id, Libc::Env &env, Genode::Allocator &alloc, - Session_label const &label, + Lz_path const &path, LZ_Decoder *decoder) : server_id(*this, server_space, server_id), @@ -92,7 +94,7 @@ Lz_rom::Session::Session(Id_space &server_space, /* Get file size */ Vfs::Directory_service::Stat stat; - if (env.vfs().stat(label.string(), stat) != Stat_result::STAT_OK) + if (env.vfs().stat(path.string(), stat) != Stat_result::STAT_OK) throw File_error(); if (!stat.size) throw File_error(); @@ -100,7 +102,7 @@ Lz_rom::Session::Session(Id_space &server_space, /* Open file */ Vfs_handle *fh; Open_result res = env.vfs().open( - label.string(), Vfs::Directory_service::OPEN_MODE_RDONLY, &fh, alloc); + path.string(), Vfs::Directory_service::OPEN_MODE_RDONLY, &fh, alloc); if (res != Open_result::OPEN_OK) throw File_error(); Vfs_handle::Guard handle_guard(fh); @@ -265,18 +267,16 @@ void Lz_rom::Main::handle_session_request(Xml_node request) Args const args = request.sub_node("args").decoded_content(); Session_label const request_label = label_from_args(args.string()).last_element(); - char new_label[request_label.capacity()]; - snprintf(new_label, sizeof(new_label), "/%s.lz", request_label.string()); - Session_label const filename(new_label); + Lz_path const lz_path("/", request_label.string(), ".lz"); try { Session *session = new (session_alloc) - Session(server_id_space, server_id, env, vfs_alloc, filename, decoder); + Session(server_id_space, server_id, env, vfs_alloc, lz_path, decoder); env.parent().deliver_session_cap( server_id, env.ep().manage(*session)); return; } catch (File_error) { - log("failed to open or read file '", filename, "'"); + log("failed to open or read file '", lz_path, "'"); } catch (Decompression_error) { char const *msg = ""; @@ -305,7 +305,7 @@ void Lz_rom::Main::handle_session_request(Xml_node request) case LZ_library_error: msg = "a bug was detected in the library"; break; } - error("failed to decompress '", filename, "', ", msg); + error("failed to decompress '", lz_path, "', ", msg); } catch (...) { } env.parent().session_response(server_id, Parent::INVALID_ARGS); } diff --git a/src/server/rom_fallback/component.cc b/src/server/rom_fallback/component.cc index 0ef45a4..270e622 100644 --- a/src/server/rom_fallback/component.cc +++ b/src/server/rom_fallback/component.cc @@ -193,11 +193,10 @@ void Rom_fallback::Main::handle_session_request(Xml_node request) size_t ram_quota = request.attribute_value("ram_quota", 0UL); - char buf[64]; - snprintf(buf, sizeof(buf), "ram_quota=%ld", ram_quota); + String<64> args("ram_quota=", ram_quota); // XXX handle Root::Invalid_args - env.upgrade(session.client_id.id(), buf); + env.upgrade(session.client_id.id(), args.string()); env.parent().session_response(server_id, Parent::SESSION_OK); }); }