From df4208c34d254e6817aa932eaeda27501ad1704e Mon Sep 17 00:00:00 2001 From: momo5502 Date: Tue, 18 Mar 2025 20:52:23 +0100 Subject: [PATCH] Fix more warnings --- .clang-tidy | 2 +- src/analyzer/main.cpp | 4 +++ src/analyzer/std_include.hpp | 1 + src/fuzzer/std_include.hpp | 1 + .../registry/registry_manager.cpp | 4 +-- src/windows-emulator/syscalls.cpp | 31 ++++++++++--------- src/windows-emulator/windows_emulator.cpp | 4 ++- 7 files changed, 28 insertions(+), 19 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 2b6077ca..f39da7a0 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,4 +1,4 @@ -Checks: '-*,bugprone-*,cert-dcl21-cpp,cert-dcl50-cpp,cert-env33-c,cert-err52-cpp,cert-err60-cpp,cert-flp30-c,cert-msc50-cpp,cert-msc51-cpp,cppcoreguidelines-*,-cppcoreguidelines-macro-usage,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-union-access,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-vararg,google-build-using-namespace,google-explicit-constructor,google-global-names-in-headers,google-readability-casting,google-runtime-int,google-runtime-operator,hicpp-*,-hicpp-vararg,misc-*,modernize-*,performance-*,readability-*,-readability-named-parameter,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-named-parameter,-cppcoreguidelines-avoid-goto,-cppcoreguidelines-avoid-non-const-global-variables,-hicpp-avoid-goto,-cppcoreguidelines-owning-memory,-readability-uppercase-literal-suffix,-readability-implicit-bool-conversion,-hicpp-no-array-decay,-hicpp-no-malloc,-readability-use-anyofallof,-cppcoreguidelines-prefer-member-initializer,-performance-no-int-to-ptr,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-special-member-functions,-hicpp-special-member-functions,-bugprone-reserved-identifier,-bugprone-easily-swappable-parameters, -bugprone-implicit-widening-of-multiplication-result,-google-explicit-constructor,-bugprone-exception-escape,-hicpp-exception-baseclass,-cppcoreguidelines-prefer-member-initializer,-bugprone-macro-parentheses,-bugprone-suspicious-missing-comma,-bugprone-sizeof-expression,-bugprone-throw-keyword-missing,-cppcoreguidelines-no-malloc,-bugprone-branch-clone,-cppcoreguidelines-pro-bounds-constant-array-index,-hicpp-explicit-conversions,-cppcoreguidelines-pro-type-member-init,-hicpp-member-init,-bugprone-lambda-function-name,-readability-function-cognitive-complexity,-misc-no-recursion,-misc-throw-by-value-catch-by-reference,-readability-simplify-boolean-expr,-readability-identifier-length,-readability-container-data-pointer,-cppcoreguidelines-virtual-class-destructor,-misc-non-private-member-variables-in-classes,-modernize-use-default-member-init,-google-readability-casting,-bugprone-suspicious-memory-comparison,-modernize-use-nodiscard,-modernize-concat-nested-namespaces,-cppcoreguidelines-avoid-do-while,-modernize-macro-to-enum,-misc-const-correctness,-cppcoreguidelines-avoid-const-or-ref-data-members,-misc-use-anonymous-namespace,-misc-misplaced-const,-readability-redundant-member-init,-cppcoreguidelines-macro-to-enum,-misc-include-cleaner,-performance-enum-size,-bugprone-empty-catch,-readability-duplicate-include,-readability-avoid-unconditional-preprocessor-if,-cppcoreguidelines-rvalue-reference-param-not-moved,-cppcoreguidelines-missing-std-forward,-bugprone-casting-through-void,-cppcoreguidelines-non-private-member-variables-in-classes' +Checks: '-*,bugprone-*,cert-dcl21-cpp,cert-dcl50-cpp,cert-env33-c,cert-err52-cpp,cert-err60-cpp,cert-flp30-c,cert-msc50-cpp,cert-msc51-cpp,cppcoreguidelines-*,-cppcoreguidelines-macro-usage,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-type-union-access,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-vararg,google-build-using-namespace,google-explicit-constructor,google-global-names-in-headers,google-readability-casting,google-runtime-int,google-runtime-operator,hicpp-*,-hicpp-vararg,misc-*,modernize-*,performance-*,readability-*,-readability-named-parameter,-modernize-use-trailing-return-type,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-named-parameter,-cppcoreguidelines-avoid-goto,-cppcoreguidelines-avoid-non-const-global-variables,-hicpp-avoid-goto,-cppcoreguidelines-owning-memory,-readability-uppercase-literal-suffix,-readability-implicit-bool-conversion,-hicpp-no-array-decay,-hicpp-no-malloc,-readability-use-anyofallof,-cppcoreguidelines-prefer-member-initializer,-performance-no-int-to-ptr,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-special-member-functions,-hicpp-special-member-functions,-bugprone-reserved-identifier,-bugprone-easily-swappable-parameters, -bugprone-implicit-widening-of-multiplication-result,-google-explicit-constructor,-bugprone-exception-escape,-hicpp-exception-baseclass,-cppcoreguidelines-prefer-member-initializer,-bugprone-macro-parentheses,-bugprone-suspicious-missing-comma,-bugprone-sizeof-expression,-bugprone-throw-keyword-missing,-cppcoreguidelines-no-malloc,-bugprone-branch-clone,-cppcoreguidelines-pro-bounds-constant-array-index,-hicpp-explicit-conversions,-cppcoreguidelines-pro-type-member-init,-hicpp-member-init,-bugprone-lambda-function-name,-readability-function-cognitive-complexity,-misc-no-recursion,-misc-throw-by-value-catch-by-reference,-readability-simplify-boolean-expr,-readability-identifier-length,-readability-container-data-pointer,-cppcoreguidelines-virtual-class-destructor,-misc-non-private-member-variables-in-classes,-modernize-use-default-member-init,-google-readability-casting,-bugprone-suspicious-memory-comparison,-modernize-use-nodiscard,-modernize-concat-nested-namespaces,-cppcoreguidelines-avoid-do-while,-modernize-macro-to-enum,-misc-const-correctness,-cppcoreguidelines-avoid-const-or-ref-data-members,-misc-use-anonymous-namespace,-misc-misplaced-const,-readability-redundant-member-init,-cppcoreguidelines-macro-to-enum,-misc-include-cleaner,-performance-enum-size,-bugprone-empty-catch,-readability-duplicate-include,-readability-avoid-unconditional-preprocessor-if,-cppcoreguidelines-rvalue-reference-param-not-moved,-cppcoreguidelines-missing-std-forward,-bugprone-casting-through-void,-cppcoreguidelines-non-private-member-variables-in-classes,-bugprone-multi-level-implicit-pointer-conversion,-bugprone-unchecked-optional-access' CheckOptions: - key: bugprone-argument-comment.StrictMode value: 1 diff --git a/src/analyzer/main.cpp b/src/analyzer/main.cpp index c6c001c9..fca08166 100644 --- a/src/analyzer/main.cpp +++ b/src/analyzer/main.cpp @@ -164,7 +164,9 @@ namespace static uint64_t count{0}; ++count; if (count > 100 && count % 10000 != 0) + { return; + } } win_emu.log.print(color::green, @@ -184,7 +186,9 @@ namespace static uint64_t count{0}; ++count; if (count > 100 && count % 10000 != 0) + { return; + } } win_emu.log.print(color::blue, "Writing to executable section %s at 0x%" PRIx64 " via 0x%" PRIx64 "\n", diff --git a/src/analyzer/std_include.hpp b/src/analyzer/std_include.hpp index 43df7c99..9719ff6b 100644 --- a/src/analyzer/std_include.hpp +++ b/src/analyzer/std_include.hpp @@ -27,4 +27,5 @@ #include +// NOLINTNEXTLINE(google-global-names-in-headers) using namespace std::literals; diff --git a/src/fuzzer/std_include.hpp b/src/fuzzer/std_include.hpp index 43df7c99..9719ff6b 100644 --- a/src/fuzzer/std_include.hpp +++ b/src/fuzzer/std_include.hpp @@ -27,4 +27,5 @@ #include +// NOLINTNEXTLINE(google-global-names-in-headers) using namespace std::literals; diff --git a/src/windows-emulator/registry/registry_manager.cpp b/src/windows-emulator/registry/registry_manager.cpp index 27386286..9a822569 100644 --- a/src/windows-emulator/registry/registry_manager.cpp +++ b/src/windows-emulator/registry/registry_manager.cpp @@ -105,7 +105,7 @@ std::optional registry_manager::get_key(const utils::path_key& key return {std::move(reg_key)}; } - const auto entry = iterator->second->get_sub_key(reg_key.path.get()); + const auto* entry = iterator->second->get_sub_key(reg_key.path.get()); if (!entry) { return std::nullopt; @@ -124,7 +124,7 @@ std::optional registry_manager::get_value(const registry_key& ke return std::nullopt; } - auto* entry = iterator->second->get_value(key.path.get(), name); + const auto* entry = iterator->second->get_value(key.path.get(), name); if (!entry) { return std::nullopt; diff --git a/src/windows-emulator/syscalls.cpp b/src/windows-emulator/syscalls.cpp index b2d0b71a..5bf51007 100644 --- a/src/windows-emulator/syscalls.cpp +++ b/src/windows-emulator/syscalls.cpp @@ -375,7 +375,7 @@ namespace NTSTATUS handle_NtSetEvent(const syscall_context& c, const uint64_t handle, const emulator_object previous_state) { - const auto entry = c.proc.events.get(handle); + auto* entry = c.proc.events.get(handle); if (!entry) { return STATUS_INVALID_HANDLE; @@ -427,7 +427,7 @@ namespace if (h.value.type == handle_types::thread) { - const auto t = c.proc.threads.get(h); + const auto* t = c.proc.threads.get(h); if (t == c.proc.active_thread && t->ref_count == 1) { // TODO: Better handle ref counting @@ -750,7 +750,7 @@ namespace return STATUS_SUCCESS; } - const auto section_entry = c.proc.sections.get(section_handle); + auto* section_entry = c.proc.sections.get(section_handle); if (!section_entry) { return STATUS_INVALID_HANDLE; @@ -758,7 +758,7 @@ namespace if (section_entry->is_image()) { - const auto binary = c.win_emu.mod_manager.map_module(section_entry->file_name, c.win_emu.log); + const auto* binary = c.win_emu.mod_manager.map_module(section_entry->file_name, c.win_emu.log); if (!binary) { return STATUS_FILE_INVALID; @@ -855,14 +855,14 @@ namespace const auto region_info = c.win_emu.memory.get_region_info(base_address); assert(!region_info.is_committed || region_info.is_reserved); - + const auto state = region_info.is_reserved ? MEM_RESERVE : MEM_FREE; + image_info.State = region_info.is_committed ? MEM_COMMIT : state; image_info.BaseAddress = reinterpret_cast(region_info.start); image_info.AllocationBase = reinterpret_cast(region_info.allocation_base); image_info.AllocationProtect = 0; image_info.PartitionId = 0; image_info.RegionSize = static_cast(region_info.length); - image_info.State = - region_info.is_committed ? MEM_COMMIT : (region_info.is_reserved ? MEM_RESERVE : MEM_FREE); + image_info.Protect = map_emulator_to_nt_protection(region_info.permissions); image_info.Type = MEM_PRIVATE; }); @@ -882,7 +882,7 @@ namespace return STATUS_BUFFER_OVERFLOW; } - const auto mod = c.win_emu.mod_manager.find_by_address(base_address); + const auto* mod = c.win_emu.mod_manager.find_by_address(base_address); if (!mod) { c.win_emu.log.error("Bad address for memory image request: 0x%" PRIx64 "\n", base_address); @@ -893,7 +893,7 @@ namespace info.access([&](MEMORY_IMAGE_INFORMATION64& image_info) { image_info.ImageBase = reinterpret_cast(mod->image_base); - image_info.SizeOfImage = mod->size_of_image; + image_info.SizeOfImage = static_cast(mod->size_of_image); image_info.ImageFlags = 0; }); @@ -1998,11 +1998,11 @@ namespace thread_iterator->second.teb->access([&](TEB64& teb) { entry.ThreadId = teb.ClientId.UniqueThread; - const auto tls_vector = teb.ThreadLocalStoragePointer; + auto* tls_vector = teb.ThreadLocalStoragePointer; if (tls_info.TlsRequest == ProcessTlsReplaceIndex) { - const auto tls_entry_ptr = tls_vector + tls_info.TlsIndex; + auto* tls_entry_ptr = tls_vector + tls_info.TlsIndex; const auto old_entry = c.emu.read_memory::PVOID>(tls_entry_ptr); c.emu.write_memory::PVOID>(tls_entry_ptr, entry.TlsModulePointer); @@ -2011,11 +2011,11 @@ namespace } else if (tls_info.TlsRequest == ProcessTlsReplaceVector) { - const auto new_tls_vector = entry.TlsVector; + auto* new_tls_vector = entry.TlsVector; for (uint32_t index = 0; index < tls_info.TlsVectorLength; ++index) { - const auto old_entry = c.emu.read_memory(tls_vector + index); + auto* old_entry = c.emu.read_memory(tls_vector + index); c.emu.write_memory(new_tls_vector + index, old_entry); } @@ -2270,7 +2270,7 @@ namespace const auto attributes = object_attributes.read(); if (attributes.ObjectName) { - const auto name = read_unicode_string( + auto name = read_unicode_string( c.emu, reinterpret_cast>*>(attributes.ObjectName)); c.win_emu.log.print(color::dark_gray, "--> Section with name %s\n", u16_to_u8(name).c_str()); s.name = std::move(name); @@ -2510,6 +2510,7 @@ namespace return STATUS_NOT_SUPPORTED; } + // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) const uint8_t sid[] = { 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x15, 0x00, 0x00, 0x00, 0x84, 0x94, 0xD4, 0x04, 0x4B, 0x68, 0x42, 0x34, 0x23, 0xBE, 0x69, 0x4E, 0xE9, 0x03, 0x00, 0x00, @@ -3229,7 +3230,7 @@ namespace return STATUS_NOT_SUPPORTED; } - const auto file = c.proc.files.get(handle); + const auto* file = c.proc.files.get(handle); if (!file) { return STATUS_INVALID_HANDLE; diff --git a/src/windows-emulator/windows_emulator.cpp b/src/windows-emulator/windows_emulator.cpp index 9d75ef33..0a58c31a 100644 --- a/src/windows-emulator/windows_emulator.cpp +++ b/src/windows-emulator/windows_emulator.cpp @@ -292,7 +292,7 @@ void windows_emulator::perform_thread_switch() bool windows_emulator::activate_thread(const uint32_t id) { - const auto thread = get_thread_by_id(this->process, id); + auto* thread = get_thread_by_id(this->process, id); if (!thread) { return false; @@ -576,6 +576,7 @@ void windows_emulator::deserialize(utils::buffer_deserializer& buffer) this->dispatcher.deserialize(buffer); } +// NOLINTNEXTLINE(readability-convert-member-functions-to-static) void windows_emulator::save_snapshot() { throw std::runtime_error("Not supported"); @@ -591,6 +592,7 @@ void windows_emulator::save_snapshot() // this->process_snapshot_ = this->process;*/ } +// NOLINTNEXTLINE(readability-convert-member-functions-to-static) void windows_emulator::restore_snapshot() { throw std::runtime_error("Not supported");