vvfat: Fix array_remove_slice()
authorKevin Wolf <kwolf@redhat.com>
Tue, 23 Jun 2020 17:55:34 +0000 (19:55 +0200)
committerKevin Wolf <kwolf@redhat.com>
Fri, 3 Jul 2020 07:37:03 +0000 (09:37 +0200)
commit3dfa23b9eff4315817c1acf59711b8414347de31
tree5ad03f87cb92d3f7a6da38cee8f9c2c53bdab19e
parentc79e243ed67683d6d06692bd7040f7394da178b0
vvfat: Fix array_remove_slice()

array_remove_slice() calls array_roll() with array->next - 1 as the
destination index. This is only correct for count == 1, otherwise we're
writing past the end of the array. array->next - count would be correct.

However, this is the only place ever calling array_roll(), so this
rather complicated operation isn't even necessary.

Fix the problem and simplify the code by replacing it with a single
memmove() call. array_roll() can now be removed.

Reported-by: Nathan Huckleberry <nhuck15@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20200623175534.38286-3-kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/vvfat.c