1
0
mirror of synced 2025-02-17 18:59:21 +01:00

fix: Crash when searching for empty strings

This commit is contained in:
WerWolv 2022-03-01 16:18:39 +01:00
parent 174cf3ed95
commit 76f8e6d6ef
2 changed files with 10 additions and 4 deletions

View File

@ -74,7 +74,7 @@ namespace hex::plugin::builtin {
void drawSearchPopup();
void drawSearchInput(std::vector<char> *currBuffer, ImGuiInputTextFlags flags);
void performSearch(char *buffer);
void performSearch(const char *buffer);
void performSearchNext();
void performSearchPrevious();
static int inputCallback(ImGuiInputTextCallbackData *data);

View File

@ -495,12 +495,15 @@ namespace hex::plugin::builtin {
static std::vector<std::pair<u64, u64>> findString(hex::prv::Provider *&provider, std::string string) {
std::vector<std::pair<u64, u64>> results;
if (string.empty())
return {};
u32 foundCharacters = 0;
std::vector<u8> buffer(1024, 0x00);
size_t dataSize = provider->getSize();
for (u64 offset = 0; offset < dataSize; offset += 1024) {
size_t usedBufferSize = std::min(u64(buffer.size()), dataSize - offset);
size_t usedBufferSize = std::min<size_t>({ buffer.size(), dataSize - offset, string.size() });
provider->read(offset + provider->getBaseAddress() + provider->getCurrentPageAddress(), buffer.data(), usedBufferSize);
for (u64 i = 0; i < usedBufferSize; i++) {
@ -525,6 +528,9 @@ namespace hex::plugin::builtin {
if ((string.size() % 2) == 1)
string = "0" + string;
if (string.empty())
return {};
std::vector<u8> hex;
hex.reserve(string.size() / 2);
@ -538,7 +544,7 @@ namespace hex::plugin::builtin {
std::vector<u8> buffer(1024, 0x00);
size_t dataSize = provider->getSize();
for (u64 offset = 0; offset < dataSize; offset += 1024) {
size_t usedBufferSize = std::min(u64(buffer.size()), dataSize - offset);
size_t usedBufferSize = std::min<size_t>({ buffer.size(), dataSize - offset, hex.size() });
provider->read(offset + provider->getBaseAddress() + provider->getCurrentPageAddress(), buffer.data(), usedBufferSize);
for (u64 i = 0; i < usedBufferSize; i++) {
@ -574,7 +580,7 @@ namespace hex::plugin::builtin {
ImGui::EndTabItem();
}
void ViewHexEditor::performSearch(char *buffer) {
void ViewHexEditor::performSearch(const char *buffer) {
auto provider = ImHexApi::Provider::get();
*this->m_lastSearchBuffer = this->m_searchFunction(provider, buffer);