]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: selftests: Fix out-of-bounds reads in CPUID test's array lookups
authorSean Christopherson <seanjc@google.com>
Thu, 3 Oct 2024 23:43:27 +0000 (16:43 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Sun, 20 Oct 2024 16:10:44 +0000 (12:10 -0400)
When looking for a "mangled", i.e. dynamic, CPUID entry, terminate the
walk based on the number of array _entries_, not the size in bytes of
the array.  Iterating based on the total size of the array can result in
false passes, e.g. if the random data beyond the array happens to match
a CPUID entry's function and index.

Fixes: fb18d053b7f8 ("selftest: kvm: x86: test KVM_GET_CPUID2 and guest visible CPUIDs against KVM_GET_SUPPORTED_CPUID")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-ID: <20241003234337.273364-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/x86_64/cpuid_test.c

index 8c579ce714e9a7ce3982123b089856c3b5963d43..fec03b11b0592ca18bc8f8fbe858f0c090e6f733 100644 (file)
@@ -60,7 +60,7 @@ static bool is_cpuid_mangled(const struct kvm_cpuid_entry2 *entrie)
 {
        int i;
 
-       for (i = 0; i < sizeof(mangled_cpuids); i++) {
+       for (i = 0; i < ARRAY_SIZE(mangled_cpuids); i++) {
                if (mangled_cpuids[i].function == entrie->function &&
                    mangled_cpuids[i].index == entrie->index)
                        return true;