qga: Fix undefined C behavior
authorEric Blake <eblake@redhat.com>
Fri, 20 Mar 2020 15:05:07 +0000 (10:05 -0500)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Tue, 24 Mar 2020 16:32:19 +0000 (11:32 -0500)
commita23f38a72921fa915536a981a4f8a9134512f120
treedcab1333de8db880f53282a2a089b731d485f202
parent807e2b6fce022707418bc8f61c069d91c613b3d2
qga: Fix undefined C behavior

The QAPI struct GuestFileWhence has a comment about how we are
exploiting equivalent values between two different integer types
shared in a union. But C says behavior is undefined on assignments to
overlapping storage when the two types are not the same width, and
indeed, 'int64_t value' and 'enum QGASeek name' are very likely to be
different in width.  Utilize a temporary variable to fix things.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Fixes: 0b4b49387
Fixes: Coverity CID 1421990
Signed-off-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qga/commands.c