Author: Jonas Devlieghere Date: 2025-08-13T01:49:03Z New Revision: 84c5b9525e09accd8859005f6eb651fc14808f74
URL: https://github.com/llvm/llvm-project/commit/84c5b9525e09accd8859005f6eb651fc14808f74 DIFF: https://github.com/llvm/llvm-project/commit/84c5b9525e09accd8859005f6eb651fc14808f74.diff LOG: [lldb] Use numeric_limits for all overflow checks in ObjectFileWasm (#153332) Use std::numeric_limits<uint32_t>::max() for all overflow checks in ObjectFileWasm and fix a few locations where I incorrectly used `>=` instead of `>`. Added: Modified: lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp Removed: ################################################################################ diff --git a/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp b/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp index a489b05acfcb4..919cc21c32ffd 100644 --- a/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp +++ b/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp @@ -63,7 +63,7 @@ GetWasmString(llvm::DataExtractor &data, llvm::DataExtractor::Cursor &c) { return std::nullopt; } - if (len >= (uint64_t(1) << 32)) { + if (len > std::numeric_limits<uint32_t>::max()) { return std::nullopt; } @@ -175,7 +175,7 @@ bool ObjectFileWasm::DecodeNextSection(lldb::offset_t *offset_ptr) { if (!c) return !llvm::errorToBool(c.takeError()); - if (payload_len >= (uint64_t(1) << 32)) + if (payload_len > std::numeric_limits<uint32_t>::max()) return false; if (section_id == llvm::wasm::WASM_SEC_CUSTOM) { @@ -256,7 +256,7 @@ ParseFunctions(SectionSP code_section_sp) { lldb::offset_t offset = 0; const uint64_t function_count = code_section_data.GetULEB128(&offset); - if (function_count >= std::numeric_limits<uint32_t>::max()) + if (function_count > std::numeric_limits<uint32_t>::max()) return llvm::createStringError("function count overflows uint32_t"); std::vector<AddressRange> functions; @@ -264,7 +264,7 @@ ParseFunctions(SectionSP code_section_sp) { for (uint32_t i = 0; i < function_count; ++i) { const uint64_t function_size = code_section_data.GetULEB128(&offset); - if (function_size >= std::numeric_limits<uint32_t>::max()) + if (function_size > std::numeric_limits<uint32_t>::max()) return llvm::createStringError("function size overflows uint32_t"); // llvm-objdump considers the ULEB with the function size to be part of the // function. We can't do that here because that would break symbolic @@ -293,13 +293,13 @@ ParseNames(SectionSP name_section_sp, while (c && c.tell() < data.size()) { const uint8_t type = data.getU8(c); const uint64_t size = data.getULEB128(c); - if (size >= std::numeric_limits<uint32_t>::max()) + if (size > std::numeric_limits<uint32_t>::max()) return llvm::createStringError("size overflows uint32_t"); switch (type) { case llvm::wasm::WASM_NAMES_FUNCTION: { const uint64_t count = data.getULEB128(c); - if (count >= std::numeric_limits<uint32_t>::max()) + if (count > std::numeric_limits<uint32_t>::max()) return llvm::createStringError("function count overflows uint32_t"); for (uint64_t i = 0; c && i < count; ++i) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits