From 5744211001d6f0775c0b281e908db6ddd83eaf4d Mon Sep 17 00:00:00 2001 From: sin-ack Date: Mon, 11 Jul 2022 20:55:39 +0000 Subject: [PATCH] AK: Remove StringView(char const*) :^) This constructor relied on running strlen implicitly on its argument, thereby potentially causing out-of-bound reads (some of which were caught a few days ago). The removal of this constructor ensures that the caller must explicitly pass the size of the string by either: 1) Using operator""sv on literal strings; or 2) Calling strlen explicitly, making it clear that the size of the view is being calculated at runtime. --- AK/StringView.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/AK/StringView.h b/AK/StringView.h index a64b7b5e87..457fefbf63 100644 --- a/AK/StringView.h +++ b/AK/StringView.h @@ -33,11 +33,6 @@ public: { VERIFY(!Checked::addition_would_overflow((uintptr_t)characters, length)); } - ALWAYS_INLINE constexpr StringView(char const* cstring) - : m_characters(cstring) - , m_length(cstring ? __builtin_strlen(cstring) : 0) - { - } ALWAYS_INLINE StringView(ReadonlyBytes bytes) : m_characters(reinterpret_cast(bytes.data())) , m_length(bytes.size())