1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
|