diff --git a/Kernel/Syscalls/execve.cpp b/Kernel/Syscalls/execve.cpp index 46cd482046..816e5a2fda 100644 --- a/Kernel/Syscalls/execve.cpp +++ b/Kernel/Syscalls/execve.cpp @@ -40,7 +40,7 @@ struct LoadResult { WeakPtr stack_region; }; -static Vector generate_auxiliary_vector(FlatPtr load_base, FlatPtr entry_eip, UserID uid, UserID euid, GroupID gid, GroupID egid, String executable_path, Optional const& main_program_fd_allocation); +static Vector generate_auxiliary_vector(FlatPtr load_base, FlatPtr entry_eip, UserID uid, UserID euid, GroupID gid, GroupID egid, StringView executable_path, Optional const& main_program_fd_allocation); static bool validate_stack_size(const Vector& arguments, const Vector& environment) { @@ -90,10 +90,10 @@ static KResultOr make_userspace_context_for_main_thread([[maybe_unused] VERIFY(result.is_success()); }; - auto push_string_on_new_stack = [&new_sp](const String& string) { + auto push_string_on_new_stack = [&new_sp](StringView string) { new_sp -= round_up_to_power_of_two(string.length() + 1, sizeof(FlatPtr)); Userspace stack_ptr = new_sp; - auto result = copy_to_user(stack_ptr, string.characters(), string.length() + 1); + auto result = copy_to_user(stack_ptr, string.characters_without_null_termination(), string.length() + 1); VERIFY(result.is_success()); }; @@ -633,7 +633,7 @@ KResult Process::do_exec(NonnullRefPtr main_program_description return KSuccess; } -static Vector generate_auxiliary_vector(FlatPtr load_base, FlatPtr entry_eip, UserID uid, UserID euid, GroupID gid, GroupID egid, String executable_path, Optional const& main_program_fd_allocation) +static Vector generate_auxiliary_vector(FlatPtr load_base, FlatPtr entry_eip, UserID uid, UserID euid, GroupID gid, GroupID egid, StringView executable_path, Optional const& main_program_fd_allocation) { Vector auxv; // PHDR/EXECFD diff --git a/Userland/DevTools/UserspaceEmulator/Emulator.cpp b/Userland/DevTools/UserspaceEmulator/Emulator.cpp index 65e50e8908..3f751f6927 100644 --- a/Userland/DevTools/UserspaceEmulator/Emulator.cpp +++ b/Userland/DevTools/UserspaceEmulator/Emulator.cpp @@ -115,7 +115,7 @@ void Emulator::setup_stack(Vector aux_vector) for (auto& auxv : aux_vector) { if (!auxv.optional_string.is_empty()) { - m_cpu.push_string(auxv.optional_string.characters()); + m_cpu.push_string(auxv.optional_string); auxv.auxv.a_un.a_ptr = (void*)m_cpu.esp().value(); } } diff --git a/Userland/Libraries/LibELF/AuxiliaryVector.h b/Userland/Libraries/LibELF/AuxiliaryVector.h index ab2d688bb1..f41d99e53d 100644 --- a/Userland/Libraries/LibELF/AuxiliaryVector.h +++ b/Userland/Libraries/LibELF/AuxiliaryVector.h @@ -89,7 +89,7 @@ struct AuxiliaryValue { auxv.a_type = type; auxv.a_un.a_ptr = (void*)ptr; } - AuxiliaryValue(Type type, String string) + AuxiliaryValue(Type type, StringView string) { auxv.a_type = type; auxv.a_un.a_ptr = nullptr; @@ -97,7 +97,7 @@ struct AuxiliaryValue { } auxv_t auxv {}; - String optional_string; + StringView optional_string; }; }