summarylogtreecommitdiffstats
path: root/0002-patterns-Limit-number-of-characters-displayed-in-a-s.patch
diff options
context:
space:
mode:
Diffstat (limited to '0002-patterns-Limit-number-of-characters-displayed-in-a-s.patch')
-rw-r--r--0002-patterns-Limit-number-of-characters-displayed-in-a-s.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/0002-patterns-Limit-number-of-characters-displayed-in-a-s.patch b/0002-patterns-Limit-number-of-characters-displayed-in-a-s.patch
new file mode 100644
index 000000000000..bf04ee774123
--- /dev/null
+++ b/0002-patterns-Limit-number-of-characters-displayed-in-a-s.patch
@@ -0,0 +1,54 @@
+From 6a1d0988d3c3bc9f135915542c37f953c0c262eb Mon Sep 17 00:00:00 2001
+From: WerWolv <werwolv98@gmail.com>
+Date: Mon, 11 Oct 2021 20:59:14 +0200
+Subject: [PATCH 2/3] patterns: Limit number of characters displayed in a
+ string pattern
+
+---
+ .../hex/pattern_language/pattern_data.hpp | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp b/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp
+index fdcc8b0..24cac33 100644
+--- a/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp
++++ b/plugins/libimhex/include/hex/pattern_language/pattern_data.hpp
+@@ -598,10 +598,12 @@ namespace hex::pl {
+ }
+
+ void createEntry(prv::Provider* &provider) override {
+- std::string buffer(this->getSize(), 0x00);
+- provider->read(this->getOffset(), buffer.data(), this->getSize());
++ auto size = std::min<size_t>(this->getSize(), 0x7F);
++ std::string buffer(size, 0x00);
+
+- this->createDefaultEntry(hex::format("\"{0}\"", makeDisplayable(buffer.data(), this->getSize()).c_str()), buffer);
++ provider->read(this->getOffset(), buffer.data(), size);
++
++ this->createDefaultEntry(hex::format("\"{0}\" {1}", makeDisplayable(buffer.data(), this->getSize()), size > this->getSize() ? "(truncated)" : ""), buffer);
+ }
+
+ [[nodiscard]] std::string getFormattedName() const override {
+@@ -621,15 +623,17 @@ namespace hex::pl {
+ }
+
+ void createEntry(prv::Provider* &provider) override {
+- std::u16string buffer(this->getSize(), 0x00);
+- provider->read(this->getOffset(), buffer.data(), this->getSize());
++ auto size = std::min<size_t>(this->getSize(), 0x100);
++
++ std::u16string buffer(size, 0x00);
++ provider->read(this->getOffset(), buffer.data(), size);
+
+ for (auto &c : buffer)
+ c = hex::changeEndianess(c, 2, this->getEndian());
+
+ auto utf8String = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}.to_bytes(buffer);
+
+- this->createDefaultEntry(hex::format("\"{0}\"", utf8String), utf8String);
++ this->createDefaultEntry(hex::format("\"{0}\" {1}", utf8String, size > this->getSize() ? "(truncated)" : ""), utf8String);
+ }
+
+ [[nodiscard]] std::string getFormattedName() const override {
+--
+2.33.1
+