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);
});
}