[PATCH] D46944: [analyzer] Use sufficiently large types for index/size calculation.

Aleksei Sidorin via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 23 10:31:12 PDT 2018

a.sidorin added a comment.

Hi Bevin,

Could you please address these comments?

Comment at: include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h:89
         SymMgr(context, BasicVals, alloc), MemMgr(context, alloc),
-        StateMgr(stateMgr), ArrayIndexTy(context.LongLongTy),
+        StateMgr(stateMgr), ArrayIndexTy(context.getSignedSizeType()),
         ArrayIndexWidth(context.getTypeSize(ArrayIndexTy)) {}
As you correctly pointed, ssize_t is 32-bit on 32-bit systems. Therefore, it is too short. So, we can leave this line as-is.

Comment at: test/Analysis/index-type.c:13
   char arr[X86_ARRAY_SIZE];
-  char *ptr = arr + UINT_MAX/2;
+  char *ptr = arr + UINT_MAX/4;
   ptr += 2;  // index shouldn't overflow
We don't need to fix the test - it is correct. We have to fix the type instead.

Comment at: test/Analysis/index-type.c:25
+void testOutOfBounds() {
+  // not out of bounds
+  buf[SIZE-1] = 1; // no-warning
The comments should be normal sentences: "Not out of bounds."


More information about the cfe-commits mailing list