mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
virpcivpdtest: Fix potential double-free()
Inside the testPCIVPDResourceCustomCompareIndex() function we have two variables @a and @b, both marked as g_autoptr(). Then, towards the end of the function b->value is freed and set to a->value. This is to make sure virPCIVPDResourceCustomCompareIndex() works correctly even if ->value member is the same for both arguments. Nevertheless, if the function returns anything else than 0 then the control executes subsequent return statement and since b->value points to the very same string as a->value a double free will occur. Avoid this by setting b->value to NULL explicitly, just like we are already doing for the successful path. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
ce880ad8ba
commit
a7c016e4cb
@ -229,8 +229,10 @@ testPCIVPDResourceCustomCompareIndex(const void *data G_GNUC_UNUSED)
|
|||||||
/* Different index, same value pointers */
|
/* Different index, same value pointers */
|
||||||
g_free(b->value);
|
g_free(b->value);
|
||||||
b->value = a->value;
|
b->value = a->value;
|
||||||
if (virPCIVPDResourceCustomCompareIndex(b, a))
|
if (virPCIVPDResourceCustomCompareIndex(b, a)) {
|
||||||
|
b->value = NULL;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
b->value = NULL;
|
b->value = NULL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user