[clang] [analyzer][NFC] Add ArrayBound tests to document casting bug (PR #127062)

DonĂ¡t Nagy via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 13 06:13:56 PST 2025


================
@@ -194,3 +194,34 @@ char test_comparison_with_extent_symbol(struct incomplete *p) {
   return ((char *)p)[-1]; // no-warning
 }
 
+int table[256], small_table[128];
+int test_cast_to_unsigned(signed char x) {
+  unsigned char y = x;
+  if (x >= 0)
+    return x;
+  // FIXME: Here the analyzer ignores the signed -> unsigned cast, and manages to
+  // load a negative value from an unsigned variable. This causes an underflow
+  // report, which is an ugly false positive.
+  // The underlying issue is tracked by Github ticket #39492.
+  return table[y]; // expected-warning {{Out of bound access to memory preceding}}
----------------
NagyDonat wrote:

Yep, that seems to be useful, I added the value dumps to the two testcases where they are relevant. (The third testcase is not buggy, I just created it to highlight potential drawbacks of naive solutions for silencing the bug.)

https://github.com/llvm/llvm-project/pull/127062


More information about the cfe-commits mailing list