diff options
author | KokaKiwi | 2021-11-09 17:27:34 +0100 |
---|---|---|
committer | KokaKiwi | 2021-11-09 17:27:34 +0100 |
commit | b7631c58d8dacc1cd82cbc2f93e21cb4fffee970 (patch) | |
tree | 13b20cff746f0770ade1a2ae12d78a107019d4e4 /0002-patterns-Limit-number-of-characters-displayed-in-a-s.patch | |
parent | 3b22989513672fb10ff8f24d30e0793bfa10b9ea (diff) | |
download | aur-b7631c58d8dacc1cd82cbc2f93e21cb4fffee970.tar.gz |
Backport fix for patterns
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.patch | 54 |
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 + |