gnucash stable: Fix Asan UB complaint about int64_t alignment.

John Ralls jralls at code.gnucash.org
Sat Dec 20 20:46:56 EST 2025


Updated	 via  https://github.com/Gnucash/gnucash/commit/3a066029 (commit)
	from  https://github.com/Gnucash/gnucash/commit/603e6ced (commit)



commit 3a06602910289aefc9d0c43abfb031e0f0870326
Author: John Ralls <jralls at ceridwen.us>
Date:   Sat Dec 20 17:46:44 2025 -0800

    Fix Asan UB complaint about int64_t alignment.
    
    by doing endian_swap on the aligned local instead of the unaligned bytes of the memory mapped file.

diff --git a/libgnucash/engine/gnc-timezone.cpp b/libgnucash/engine/gnc-timezone.cpp
index 5584e46e51..5653e02c98 100644
--- a/libgnucash/engine/gnc-timezone.cpp
+++ b/libgnucash/engine/gnc-timezone.cpp
@@ -455,9 +455,9 @@ namespace IANAParser
 	    {
                 int64_t transition_time;
                 // Ensure correct alignment for ARM.
-                memcpy(&transition_time,
-                       endian_swap(reinterpret_cast<int64_t*>(&fileblock[fb_index])),
+                memcpy(&transition_time, &fileblock[fb_index],
                        sizeof(int64_t));
+                transition_time = *(endian_swap(&transition_time));
                 auto info = static_cast<uint8_t>(fileblock[info_index]);
                 transitions.push_back({transition_time, info});
 	    }



Summary of changes:
 libgnucash/engine/gnc-timezone.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)



More information about the gnucash-changes mailing list