From 6d41ea01355b685294f4807ccb67a6adb251f680 Mon Sep 17 00:00:00 2001 From: Jeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com> Date: Mon, 17 Feb 2025 22:59:48 -0600 Subject: [PATCH] Fix UB due to forming a reference to a packed struct member --- src/symbols/dwarf/dwarf_resolver.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/symbols/dwarf/dwarf_resolver.cpp b/src/symbols/dwarf/dwarf_resolver.cpp index 3d04353..b11d4b6 100644 --- a/src/symbols/dwarf/dwarf_resolver.cpp +++ b/src/symbols/dwarf/dwarf_resolver.cpp @@ -41,7 +41,10 @@ namespace libdwarf { constexpr bool trace_dwarf = false; // sorted range entries for dies - template + template< + typename T, + typename std::enable_if::value && sizeof(T) <= 16, int>::type = 0 + > class die_cache { public: struct die_handle { @@ -95,7 +98,7 @@ namespace libdwarf { struct die_and_data { const die_object& die; - const T& data; + T data; }; template auto make_lookup_result(typename std::vector::const_iterator vec_it) const