audit: Annotate struct audit_chunk with __counted_by
authorKees Cook <keescook@chromium.org>
Thu, 17 Aug 2023 20:35:02 +0000 (13:35 -0700)
committerPaul Moore <paul@paul-moore.com>
Tue, 12 Sep 2023 20:09:32 +0000 (16:09 -0400)
Prepare for the coming implementation by GCC and Clang of the __counted_by
attribute. Flexible array members annotated with __counted_by can have
their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS
(for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family
functions).

As found with Coccinelle[1], add __counted_by for struct audit_chunk.

[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci

Cc: Paul Moore <paul@paul-moore.com>
Cc: Eric Paris <eparis@redhat.com>
Cc: audit@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Signed-off-by: Paul Moore <paul@paul-moore.com>
kernel/audit_tree.c

index e867c17d3f84df3a986140a054075ed5cb7764ab..85a5b306733b08fba26357ee5472ab0ae47dae74 100644 (file)
@@ -34,7 +34,7 @@ struct audit_chunk {
                struct list_head list;
                struct audit_tree *owner;
                unsigned index;         /* index; upper bit indicates 'will prune' */
-       } owners[];
+       } owners[] __counted_by(count);
 };
 
 struct audit_tree_mark {