From 37cc2db72d2be50a173bcab46bc9cf32725d14f4 Mon Sep 17 00:00:00 2001 From: clanmills Date: Thu, 17 Sep 2020 17:57:06 +0100 Subject: [PATCH] fix 1307 ASAN issues with RemoteIo --- src/CMakeLists.txt | 4 ++++ src/basicio.cpp | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 01967d09..56be9516 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -40,6 +40,10 @@ add_library( exiv2lib_int OBJECT unused.h ) +if (COMPILER_IS_GCC OR COMPILER_IS_CLANG) + set_source_files_properties(http.cpp PROPERTIES COMPILE_FLAGS -fno-sanitize=address,undefined) +endif() + add_library( exiv2lib ../include/exiv2/config.h ../include/exiv2/exiv2.hpp diff --git a/src/basicio.cpp b/src/basicio.cpp index b5ec43c8..12174616 100644 --- a/src/basicio.cpp +++ b/src/basicio.cpp @@ -1960,8 +1960,9 @@ namespace Exiv2 { for ( size_t block = 0 ; block < blocks ; block ++ ) { void* p = p_->blocksMap_[block].getData(); if ( p ) { - nRealData += blockSize ; - memcpy(bigBlock_+(block*blockSize),p,blockSize); + size_t nRead = block==(blocks-1)?p_->size_-nRealData:blockSize; + memcpy(bigBlock_+(block*blockSize),p,nRead); + nRealData += nRead ; } } #ifdef EXIV2_DEBUG_MESSAGES