[clang] [Wunsafe-buffer-usage] Fix false positives in handling string literals. (PR #115552)

via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 11 09:51:23 PST 2024


================
@@ -38,3 +38,17 @@ void constant_idx_unsafe(unsigned idx) {
                         // expected-note at -1{{change type of 'buffer' to 'std::array' to label it for hardening}}
   buffer[10] = 0;       // expected-note{{used in buffer access here}}
 }
+
+void constant_id_string(unsigned idx) {
+  char safe_char = "abc"[1]; // no-warning
+  safe_char = ""[0];
+  safe_char = "\0"[0];
+ 
+  char abcd[5] = "abc";
+  abcd[2]; // no-warning
+
+  char unsafe_char = "abc"[3]; //expected-warning{{unsafe buffer access}}
----------------
jkorous-apple wrote:

The null at the end is still within bounds. This case should not be a warning.

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


More information about the cfe-commits mailing list