[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
|