Hi,

I am going to look into the ArrayBoundChecker. Currently it doesn't handle 
symbolic constraints on indexing with '>' or '<' properly.

There are two implementation of the ArrayBoundChecker, and some errors are not 
detected with the V2, (see below), so my main question is: Which of the 
ArrayBoundV2 or ArrayBound is the one that should be improved on? Also, any 
specific class/interfaces that should/shouldn't be used?. Any other useful 
hints on where to fix this are also highly appreciated.

cheers!,

Per



The ArrayBound check doesn't find this error:

void writeOutOfBoundsGEConstraint(int x) {
  int a[10];
  if (x >= 10)
     a[x] = 5;  // ← 1. write access GE does not generate error
}

It does however find the read access with '>', but only using ArrayBound, _not_ 
ArrayBoundV2.

int readOutOfBoundsGEConstraint(int x) {
  int a[10];
  int g=5;
  if (x >= 10)
    g = a[x];   // ← 2. read access GE generate error on V0
  return g;
}

out-of-bounds_2.c:13:9: warning: Access out-of-bound array element (buffer 
overflow)
    g = a[x];   // ← 2. read access GE generate error on V0
        ^~~~

The rest below are found in both ArrayBound and ArrayBoundV2:

void writeOutOfBoundsEQ(int x) {
  int a[10];
  if (x == 10)
     a[x] = 0;  // ← 3. write access EQ generate error on V0 and V2
}

out-of-bounds_2.c:20:11: warning: Access out-of-bound array element (buffer 
overflow)
     a[x] = 0;  // ← 3. write access EQ generate error on V0 and V2
     ~~~~ ^

int readOutOfBoundsEQ(int x) {
  int a[10];
  int g=5;
  if (x == 10)
    g = a[x];   // ← 4. read access EQ generate error on V0 and V2
  return g;
}

out-of-bounds_2.c:26:9: warning: Access out-of-bound array element (buffer 
overflow)
    g = a[x];   // ← 4. read access EQ generate error on V0 and V2
        ^~~~







.......................................................................................................................
Per Viberg Senior Engineer
Evidente ES East AB  Warfvinges väg 34  SE-112 51 Stockholm  Sweden
Phone:    +46 (0)8 402 79 00
Mobile:    +46 (0)70 912 42 52
E-mail:     [email protected]<mailto:[email protected]>

www.evidente.se<http://www.evidente.se>
This e-mail, which might contain confidential information, is addressed to the 
above stated person/company. If you are not the correct addressee, employee or 
in any other way the person concerned, please notify the sender immediately. At 
the same time, please delete this e-mail and destroy any prints. Thank You.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to