mirror of
https://github.com/qemu/qemu.git
synced 2026-04-05 21:46:25 +00:00
dump: enhance dump_state_prepare fd initialization
Initializing descriptor with zero is unsafe: during cleanup we risk to unconditional close of fd == 0 in case dump state wasn't fully initialized. Thus, let's init fd with -1 value and check its value before closing it. Signed-off-by: Nikolai Barybin <nikolai.barybin@virtuozzo.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20250911123656.413160-2-nikolai.barybin@virtuozzo.com>
This commit is contained in:
committed by
Marc-André Lureau
parent
c141bcb6af
commit
8114cd44c8
@@ -104,7 +104,10 @@ static int dump_cleanup(DumpState *s)
|
|||||||
|
|
||||||
guest_phys_blocks_free(&s->guest_phys_blocks);
|
guest_phys_blocks_free(&s->guest_phys_blocks);
|
||||||
memory_mapping_list_free(&s->list);
|
memory_mapping_list_free(&s->list);
|
||||||
close(s->fd);
|
if (s->fd != -1) {
|
||||||
|
close(s->fd);
|
||||||
|
}
|
||||||
|
s->fd = -1;
|
||||||
g_free(s->guest_note);
|
g_free(s->guest_note);
|
||||||
g_clear_pointer(&s->string_table_buf, g_array_unref);
|
g_clear_pointer(&s->string_table_buf, g_array_unref);
|
||||||
s->guest_note = NULL;
|
s->guest_note = NULL;
|
||||||
@@ -1709,8 +1712,8 @@ static DumpState dump_state_global = { .status = DUMP_STATUS_NONE };
|
|||||||
|
|
||||||
static void dump_state_prepare(DumpState *s)
|
static void dump_state_prepare(DumpState *s)
|
||||||
{
|
{
|
||||||
/* zero the struct, setting status to active */
|
/* zero the struct, setting status to active and fd to -1 */
|
||||||
*s = (DumpState) { .status = DUMP_STATUS_ACTIVE };
|
*s = (DumpState) { .fd = -1, .status = DUMP_STATUS_ACTIVE };
|
||||||
}
|
}
|
||||||
|
|
||||||
bool qemu_system_dump_in_progress(void)
|
bool qemu_system_dump_in_progress(void)
|
||||||
|
|||||||
Reference in New Issue
Block a user