]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
virt: fix container detection
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>
Thu, 5 Jan 2023 12:57:51 +0000 (13:57 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 5 Jan 2023 20:45:53 +0000 (21:45 +0100)
Commit 1b86c7c59ecc ("virt: make virtualization enum a named type")
made the conversion from `if (!r)` to `if (v != VIRTUALIZATION_NONE)`.

However, the initial test was meaning "if r is null", IOW "if r IS
`VIRTUALIZATION_NONE`).

The test is wrong and this can lead to false detection of the container
environment (when calling `systemctl exit`).

For example, https://gitlab.freedesktop.org/whot/libevdev/-/jobs/34207974
is calling `systemctl exit 0`, and systemd terminates with the exit code
`130`.

Fixing that typo makes `systemctl exit 0` returns `0`.

Fixes: 1b86c7c59ecc26efdf278f5c1c4430346021cd38.
src/basic/virt.c

index 7c238613e6df3516efc66f379376d232b581eed6..c2eae4c52d2f9372a17e19bd9c17f30e033bf200 100644 (file)
@@ -778,7 +778,7 @@ translate_name:
                 /* Some images hardcode container=oci, but OCI is not a specific container manager.
                  * Try to detect one based on well-known files. */
                 v = detect_container_files();
-                if (v != VIRTUALIZATION_NONE)
+                if (v == VIRTUALIZATION_NONE)
                         v = VIRTUALIZATION_CONTAINER_OTHER;
                 goto finish;
         }