2023-12-21 20:49:12

by Mark Brown

[permalink] [raw]
Subject: [PATCH] lsm: Add a __counted_by() annotation to lsm_ctx.ctx

The ctx in struct lsm_ctx is an array of size ctx_len, tell the compiler
about this using __counted_by() where supported to improve the ability to
detect overflow issues.

Reported-by: Aishwarya TCV <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
---
include/uapi/linux/lsm.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/lsm.h b/include/uapi/linux/lsm.h
index f0386880a78e..4150333d224f 100644
--- a/include/uapi/linux/lsm.h
+++ b/include/uapi/linux/lsm.h
@@ -36,7 +36,7 @@ struct lsm_ctx {
__u64 flags;
__u64 len;
__u64 ctx_len;
- __u8 ctx[];
+ __u8 ctx[] __counted_by(ctx_len);
};

/*

---
base-commit: ec4e9d630a64df500641892f4e259e8149594a99
change-id: 20231221-lsm-fix-counted-by-f9fd827e26aa

Best regards,
--
Mark Brown <[email protected]>



2023-12-21 22:34:46

by Paul Moore

[permalink] [raw]
Subject: Re: [PATCH] lsm: Add a __counted_by() annotation to lsm_ctx.ctx

On Thu, Dec 21, 2023 at 3:39 PM Mark Brown <[email protected]> wrote:
>
> The ctx in struct lsm_ctx is an array of size ctx_len, tell the compiler
> about this using __counted_by() where supported to improve the ability to
> detect overflow issues.
>
> Reported-by: Aishwarya TCV <[email protected]>
> Signed-off-by: Mark Brown <[email protected]>
> ---
> include/uapi/linux/lsm.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/uapi/linux/lsm.h b/include/uapi/linux/lsm.h
> index f0386880a78e..4150333d224f 100644
> --- a/include/uapi/linux/lsm.h
> +++ b/include/uapi/linux/lsm.h
> @@ -36,7 +36,7 @@ struct lsm_ctx {
> __u64 flags;
> __u64 len;
> __u64 ctx_len;
> - __u8 ctx[];
> + __u8 ctx[] __counted_by(ctx_len);
> };

We also now need to include stddef.h in lsm.h for the __counted_by() macro, yes?

--
paul-moore.com