The memory wasn't actually overlapping, because CHECKSUM_VALUE_COUNT=2 so
only 1 element was memcpy()d. However, it would have been wrong if
CHECKSUM_VALUE_COUNT had been higher, so fix it to make the code
future-safe.
Found by Martin Strunz
if (!rec->checksum_is_pointer) {
if (rec->checksum.value[CHECKSUM_VALUE_COUNT-1] == 0) {
- memcpy(rec->checksum.value + 1, rec->checksum.value,
- sizeof(rec->checksum.value[0]) *
- (CHECKSUM_VALUE_COUNT-1));
+ memmove(rec->checksum.value + 1, rec->checksum.value,
+ sizeof(rec->checksum.value[0]) *
+ (CHECKSUM_VALUE_COUNT-1));
rec->checksum.value[0] = checksum;
return;
}