From 6947bddd3f29cf344eb5900fcc63d26d06cd5687 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 7 Jan 2020 12:27:11 +0100 Subject: [PATCH] base: avoid use of memcpy --- repos/base-foc/src/core/ipc_pager.cc | 4 ++-- repos/base/include/base/connection.h | 10 ++++------ repos/base/src/core/include/log_session_component.h | 6 +----- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/repos/base-foc/src/core/ipc_pager.cc b/repos/base-foc/src/core/ipc_pager.cc index b3650f198..8f3012f4f 100644 --- a/repos/base-foc/src/core/ipc_pager.cc +++ b/repos/base-foc/src/core/ipc_pager.cc @@ -36,7 +36,7 @@ void Ipc_pager::_parse(unsigned long label) { if (_type == PAGEFAULT || _type == EXCEPTION) _parse_pagefault(); if (_type == PAUSE || _type == EXCEPTION) - memcpy(&_regs, l4_utcb_exc(), sizeof(l4_exc_regs_t)); + _regs = *l4_utcb_exc(); } @@ -134,7 +134,7 @@ void Ipc_pager::acknowledge_wakeup() void Ipc_pager::acknowledge_exception() { - memcpy(l4_utcb_exc(), &_regs, sizeof(l4_exc_regs_t)); + _regs = *l4_utcb_exc(); l4_cap_idx_t dst = Fiasco::Capability::valid(_last.kcap) ? _last.kcap : (l4_cap_idx_t)L4_SYSF_REPLY; Fiasco::l4_msgtag_t const msg_tag = diff --git a/repos/base/include/base/connection.h b/repos/base/include/base/connection.h index 8155d6b38..bfa29aab7 100644 --- a/repos/base/include/base/connection.h +++ b/repos/base/include/base/connection.h @@ -89,7 +89,8 @@ class Genode::Connection : public Connection_base enum { FORMAT_STRING_SIZE = Parent::Session_args::MAX_SIZE }; char _session_args[FORMAT_STRING_SIZE]; - char _affinity_arg[sizeof(Affinity)]; + + Affinity _affinity_arg { }; void _session(Parent &, Affinity const &affinity, @@ -99,17 +100,14 @@ class Genode::Connection : public Connection_base sc.vprintf(format_args, list); va_end(list); - memcpy(_affinity_arg, &affinity, sizeof(Affinity)); + _affinity_arg = affinity; } Capability _request_cap() { - Affinity affinity; - memcpy(&affinity, _affinity_arg, sizeof(Affinity)); - try { return _env.session(_id_space_element.id(), - _session_args, affinity); } + _session_args, _affinity_arg); } catch (...) { error(SESSION_TYPE::service_name(), "-session creation failed " "(", Cstring(_session_args), ")"); diff --git a/repos/base/src/core/include/log_session_component.h b/repos/base/src/core/include/log_session_component.h index 1e7ec9d02..3ed806f29 100644 --- a/repos/base/src/core/include/log_session_component.h +++ b/repos/base/src/core/include/log_session_component.h @@ -50,14 +50,10 @@ namespace Genode { char const *string = string_buf.string(); size_t len = strlen(string); - char buf[string_buf.MAX_SIZE]; unsigned from_i = 0; - for (unsigned i = 0; i < len; i++) { if (string[i] == '\n') { - memcpy(buf, string + from_i, i - from_i); - buf[i - from_i] = 0; - log("[", _label, "] ", Cstring(buf)); + log("[", _label, "] ", Cstring(string + from_i, i - from_i)); from_i = i + 1; } }