[clang] [clang][analyzer] Support strlen with offset to string literal in CStringChecker (PR #159795)
DonĂ¡t Nagy via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 22 04:13:10 PDT 2025
================
@@ -235,6 +242,19 @@ void testStrlenCallee(void) {
clang_analyzer_eval(lenBefore == lenAfter); // expected-warning{{UNKNOWN}}
}
+void strlen_symbolic_offset(unsigned x) {
+ const char *str = "abcd";
+ if (x > 3)
+ return;
+ // FIXME: these should be known
----------------
NagyDonat wrote:
If `x` is `unsigned` and `(x > 3)` is false, then the possible values of `x` are $\lbrace 0,1,2,3\rbrace$, so the possible values of `strlen(str + x)` are $\lbrace4,3,2,1\rbrace$ -- therefore `UNKNOWN` is the correct result for most of these checks (the only real FIXME is that `strlen(str + x) <= 4` should be true).
https://github.com/llvm/llvm-project/pull/159795
More information about the cfe-commits
mailing list