array: Fix removal of elements in the second half of an array
authorTobias Brunner <tobias@strongswan.org>
Tue, 18 Mar 2014 13:42:44 +0000 (14:42 +0100)
committerTobias Brunner <tobias@strongswan.org>
Tue, 18 Mar 2014 13:46:16 +0000 (14:46 +0100)
Memory beyond the end of the array was moved when array elements in the
second half of an array were removed.

Fixes #548.

src/libstrongswan/collections/array.c

index 314e8e9..75efb85 100644 (file)
@@ -141,7 +141,7 @@ static void remove_tail(array_t *array, int idx)
        /* move all items after idx one down */
        memmove(array->data + get_size(array, idx + array->head),
                        array->data + get_size(array, idx + array->head + 1),
-                       get_size(array, array->count - idx));
+                       get_size(array, array->count - 1 - idx));
        array->count--;
        array->tail++;
 }