[clang] [clang][analyzer] Add alpha.core.NullTerminated checker (PR #188128)
DonĂ¡t Nagy via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 14 07:38:44 PDT 2026
================
@@ -3264,6 +3264,33 @@ Check for cases where the dynamic and the static type of an object are unrelated
NSNumber *number = date;
[number doubleValue];
+.. _alpha-core-NullTerminated:
+
+alpha.core.NullTerminated (C, C++)
+""""""""""""""""""""""""""""""""""
+Check for arrays not null-terminated passed to functions whose parameters are
+annotated with ``__attribute__((annotate("null_terminated")))``.
+
+.. code-block:: c
+
+ #define NULL_TERMINATED __attribute__((annotate("null_terminated")))
+
+ void receive(NULL_TERMINATED const int signals[]);
+
+ void caller(void) {
+ int sigs[] = {1, 2, 3}; // Missing null terminator
+ receive(sigs); // warn: array argument is not null-terminated
+ }
+
+An array is only reported when every one of its elements is known to be
+non-zero, so the checker remains silent if there is anything it cannot reason
+about.
+
+**Options**
+
+* ``MaxArraySize`` (integer). Arrays with more elements than this are not
+ inspected. Defaults to 1024.
----------------
NagyDonat wrote:
Please add a link to the documentation to `region-store-max-binding-fanout` and mention that this checker won't be reason about contents of initializers that are larger than that limit.
https://github.com/llvm/llvm-project/pull/188128
More information about the cfe-commits
mailing list