[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/4] xen: resolve MISRA C Rule 11.8 in xen_build_id_check()


  • To: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>
  • Date: Tue, 3 Nov 2026 10:29:20 +0000
  • Accept-language: en-US, uk-UA, ru-RU
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kEqVgxel8paWkLlVA9PgdAVvX8/0qfWrrq2+a6qiGTU=; b=bdvqZ+mBj5ffbORMVvs18oCkuuKxb5NZ07RSVU0Ka1ljS3iIN1ZXBfZyP+uAc6cebsf3AS31nXwb77PtOQqjRs6LYUzSHkxGHgmv6mi6pBwXeZ2bK62An0lmGRBlFA0okvFG7z7EoRM/jM1uH/XGgvPR/WqflE1Y+si9Bi9rpTfBLdfY9smeWDsaIQEae9Yq84N9deFdOAbuvdD7wntXrfMVOMj9/uZqUM/xC4+lOJciZhArPPL3Bj4F/jVi6FjfdmeQhhYYtr4sXMEcceZvX3HyQSEv4DsTLDOQcuZDl2LmEwowhfYUZ8xFmVgtKznQXy2PZwVwRfXsDInIRRnmtw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k6IYCdphpUMZM9J097xtKJJhn2LDt3ABSiHT08k7HadCS7v5W9EONY2hN6oFsKecWk2XAoSikUZNLxb6ELSiejG4f0vPjwVzfrRsK5P/mioEDsmzWf1aLO+oUqi8jp9LS1wk/KiieXSDe3+Xgy/Z15/o9rmEV1MccPWKtI5PN81HDdf5+v3wU5C7YLk9fUOZcVwY2O+Axk+9PcIuJlI2CylQKrMS4ZCAU41glBofrpfsf34hf6mtLwxI35DuMGx2vnQTbFrsKXUK0replbMQZchxYk4rV0BLda1MwThMlZygy5af3frVoacT1sF+b5riprxSyJLOGOmg0GYnlnZB8A==
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=epam.com header.i="@epam.com" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:x-ms-exchange-senderadcheck"
  • Authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger@xxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>
  • Delivery-date: Tue, 03 Nov 2026 10:29:27 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHda34v1vVQdT6hdUGbIMGkiVK2hw==
  • Thread-topic: [PATCH 3/4] xen: resolve MISRA C Rule 11.8 in xen_build_id_check()

ELFNOTE_NAME() unconditionally casts its argument to 'char *', and
ELFNOTE_DESC() is built on top of it. xen_build_id_check() passes a
'const Elf_Note *' to both of them, so the const qualifier is cast away,
which is a violation of MISRA C Rule 11.8.

Introduce ELFNOTE_NAME_CONST() and ELFNOTE_DESC_CONST() for read-only
access to the note, and use them in xen_build_id_check().

No functional changes.

Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>
---
 xen/common/version.c  | 4 ++--
 xen/include/xen/elf.h | 4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/xen/common/version.c b/xen/common/version.c
index 80e7a9b981..587c07ab52 100644
--- a/xen/common/version.c
+++ b/xen/common/version.c
@@ -133,13 +133,13 @@ int xen_build_id_check(const Elf_Note *n, unsigned int 
n_sz,
         return -EINVAL;
 
     /* Sanity check, name should be "GNU" for ld-generated build-id. */
-    if ( strncmp(ELFNOTE_NAME(n), "GNU", n->namesz) != 0 )
+    if ( strncmp(ELFNOTE_NAME_CONST(n), "GNU", n->namesz) != 0 )
         return -ENODATA;
 
     if ( len )
         *len = n->descsz;
     if ( p )
-        *p = ELFNOTE_DESC(n);
+        *p = ELFNOTE_DESC_CONST(n);
 
     return 0;
 }
diff --git a/xen/include/xen/elf.h b/xen/include/xen/elf.h
index 4199b4d6e6..3337b8cabe 100644
--- a/xen/include/xen/elf.h
+++ b/xen/include/xen/elf.h
@@ -34,4 +34,8 @@
 #define ELFNOTE_DESC(_n_) (ELFNOTE_NAME(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
 #define ELFNOTE_NEXT(_n_) ((Elf_Note *)(ELFNOTE_DESC(_n_) + 
ELFNOTE_ALIGN((_n_)->descsz)))
 
+#define ELFNOTE_NAME_CONST(_n_) ((const char *)(_n_) + sizeof(*(_n_)))
+#define ELFNOTE_DESC_CONST(_n_) \
+    (ELFNOTE_NAME_CONST(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
+
 #endif /* __XEN_ELF_H__ */
-- 
2.43.0

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.