From 118d3810915c37439c4a0084bab687e81b6c82a1 Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Wed, 13 Apr 2022 20:05:41 +0300 Subject: [PATCH] LibArchive: Stop null-terminating StringView tar file header fields Since 8209c2b5707db24a8552c6ce8f361f9c49804dec was added the requires check for copy_characters_to_buffer matched StringViews as well, which caused unexpected null bytes to be inserted for non null-terminated fields. --- Userland/Libraries/LibArchive/Tar.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibArchive/Tar.h b/Userland/Libraries/LibArchive/Tar.h index f175b3a5e0a..37f591ddb3b 100644 --- a/Userland/Libraries/LibArchive/Tar.h +++ b/Userland/Libraries/LibArchive/Tar.h @@ -61,10 +61,11 @@ static StringView get_field_as_string_view(char const (&field)[N]) template static void set_field(char (&field)[N], TSource&& source) { - if constexpr (requires { source.copy_characters_to_buffer(field, N); }) { - VERIFY(source.copy_characters_to_buffer(field, N)); - } else { + if constexpr (requires { source.characters_without_null_termination(); }) { memcpy(field, source.characters_without_null_termination(), min(N, source.length())); + } else { + auto success = source.copy_characters_to_buffer(field, N); + VERIFY(success); } }