]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_process: Fix theoretical overflow in uint to bool typecast
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 9 Feb 2022 08:31:54 +0000 (09:31 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 9 Feb 2022 08:31:54 +0000 (09:31 +0100)
The qemuPrepareNVRAM() function accepts three arguments and the
last one being a boolean type. However, when the function is
called from qemuProcessPrepareHost() the argument passed is a
result of logical and of @flags (unsigned int) and
VIR_QEMU_PROCESS_START_RESET_NVRAM value. In theory this is
unsafe to do because if the value of the flag is ever changed
then this expression might overflow. Do what we do elsewhere:
double negation.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_process.c

index 7066696f3106be5c9f3ddfacbccf224c9fb56249..24873f6fb773b1d738e86190b29345519f60bc43 100644 (file)
@@ -6983,7 +6983,7 @@ qemuProcessPrepareHost(virQEMUDriver *driver,
         qemuProcessMakeDir(driver, vm, priv->channelTargetDir) < 0)
         return -1;
 
-    if (qemuPrepareNVRAM(driver, vm, flags & VIR_QEMU_PROCESS_START_RESET_NVRAM) < 0)
+    if (qemuPrepareNVRAM(driver, vm, !!(flags & VIR_QEMU_PROCESS_START_RESET_NVRAM)) < 0)
         return -1;
 
     if (vm->def->vsock) {