From: Andrew Cooper Date: Tue, 16 Apr 2024 15:21:34 +0000 (+0100) Subject: xen/efi: Rewrite DOS/PE magic checking without memcmp() X-Git-Tag: 4.19.0-rc1~340 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4cd66fb56dc6972178f6543217b66bc122fbbd5a;p=xen.git xen/efi: Rewrite DOS/PE magic checking without memcmp() Misra Rule 21.16 doesn't like the use of memcmp() against character arrays (a string literal in this case). This is a rare piece of logic where we're looking for a magic marker that just happens to make sense when expressed as ASCII. Rewrite using plain compares. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Stefano Stabellini Acked-by: Roger Pau Monné Reviewed-by: Jan Beulich --- diff --git a/xen/common/efi/pe.c b/xen/common/efi/pe.c index a84992df9a..ef8a2543e0 100644 --- a/xen/common/efi/pe.c +++ b/xen/common/efi/pe.c @@ -111,7 +111,8 @@ const void *__init pe_find_section(const void *image, const UINTN image_size, UINTN offset, i; if ( image_size < sizeof(*dos) || - memcmp(dos->Magic, "MZ", 2) != 0 ) + dos->Magic[0] != 'M' || + dos->Magic[1] != 'Z' ) return NULL; offset = dos->ExeHeader; @@ -119,7 +120,10 @@ const void *__init pe_find_section(const void *image, const UINTN image_size, offset += sizeof(*pe); if ( image_size < offset || - memcmp(pe->Magic, "PE\0\0", 4) != 0 ) + pe->Magic[0] != 'P' || + pe->Magic[1] != 'E' || + pe->Magic[2] != '\0' || + pe->Magic[3] != '\0' ) return NULL; if ( pe->FileHeader.Machine != PE_HEADER_MACHINE )