diff --git a/src/futils.cpp b/src/futils.cpp index 468f4ab0..680e72d8 100644 --- a/src/futils.cpp +++ b/src/futils.cpp @@ -155,13 +155,11 @@ namespace Exiv2 { int rc = result && data_buf && output_length < resultSize ? 1 : 0; if ( rc ) { const unsigned char* data = (const unsigned char*) data_buf ; - ::memset(result,0,resultSize); - for (size_t i = 0, j = 0 ; i < dataLength;) { - uint32_t octet_a = data[i++] ; - uint32_t octet_b = data[i++] ; - uint32_t octet_c = data[i++] ; + uint32_t octet_a = i < dataLength ? data[i++] : 0 ; + uint32_t octet_b = i < dataLength ? data[i++] : 0 ; + uint32_t octet_c = i < dataLength ? data[i++] : 0 ; uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;