From: Peter Maydell Date: Thu, 21 Jul 2022 11:52:06 +0000 (+0100) Subject: migration: Assert that migrate_multifd_compression() returns an in-range value X-Git-Tag: v7.1.0-rc1~2^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ead34f64f97d11626774a57863ca285a7ddc0d18;p=thirdparty%2Fqemu.git migration: Assert that migrate_multifd_compression() returns an in-range value Coverity complains that when we use the return value from migrate_multifd_compression() as an array index: multifd_recv_state->ops = multifd_ops[migrate_multifd_compression()]; that this might overrun the array (which is declared to have size MULTIFD_COMPRESSION__MAX). This is because the function return type is MultiFDCompression, which is an autogenerated enum. The code generator includes the "one greater than the maximum possible value" MULTIFD_COMPRESSION__MAX in the enum, even though this is not actually a valid value for the enum, and this makes Coverity think that migrate_multifd_compression() could return that __MAX value and index off the end of the array. Suppress the Coverity error by asserting that the value we're going to return is within range. Resolves: Coverity CID 1487239, 1487254 Signed-off-by: Peter Maydell Message-Id: <20220721115207.729615-2-peter.maydell@linaro.org> Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Juan Quintela Signed-off-by: Dr. David Alan Gilbert --- diff --git a/migration/migration.c b/migration/migration.c index 82fbe0cf553..bb8bbddfe46 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2617,6 +2617,7 @@ MultiFDCompression migrate_multifd_compression(void) s = migrate_get_current(); + assert(s->parameters.multifd_compression < MULTIFD_COMPRESSION__MAX); return s->parameters.multifd_compression; }