Explorar o código

hashindex_compact: use memmove for possibly overlapping copy

Marian Beermann %!s(int64=8) %!d(string=hai) anos
pai
achega
1d5d50463c
Modificáronse 1 ficheiros con 2 adicións e 1 borrados
  1. 2 1
      src/borg/_hashindex.c

+ 2 - 1
src/borg/_hashindex.c

@@ -650,7 +650,8 @@ hashindex_compact(HashIndex *index)
         begin_used_idx = idx;
 
         if(!empty_slot_count) {
-            memcpy(BUCKET_ADDR(index, compact_tail_idx), BUCKET_ADDR(index, idx), index->bucket_size);
+            /* In case idx==compact_tail_idx, the areas overlap */
+            memmove(BUCKET_ADDR(index, compact_tail_idx), BUCKET_ADDR(index, idx), index->bucket_size);
             idx++;
             compact_tail_idx++;
             continue;