Value analysis generates incorrect Imperative outputs for arrays
ID0002030: This issue was created automatically from Mantis Issue 2030. Further discussion may take place here.
Id | Project | Category | View | Due Date | Updated |
---|---|---|---|---|---|
ID0002030 | Frama-C | Plug-in > Eva | public | 2014-12-12 | 2015-01-07 |
Reporter | gaggarwal | Assigned To | yakobowski | Resolution | no change required |
Priority | normal | Severity | feature | Reproducibility | always |
Platform | - | OS | - | OS Version | - |
Product Version | Frama-C Neon-20140301 | Target Version | - | Fixed in Version | - |
Description :
In case, the size of an array is not known, value analysis generated array[0..1] as Imperative outputs of a function updating array.
Additional Information :
In above example I tried adding some bound on variable count using requires clause as below:
/@ requires 0 < count < 8; / void copy(int src, int dest, int count) { for(int i=0; i<count; i++) { dest[i] = src[i]; } }
Even then imperative output of function copy generated was S_dest[0..1]
Steps To Reproduce :
For example: Consider a file f.c has below copy function:
void copy(int* src, int* dest, int count) { for(int i=0; i<count; i++) { dest[i] = src[i]; } }
Execute: frama-c -val -out-external -lib-entry -main copy f.c Result: [inout] Out (external) for function copy: S_dest[0..1]
S_dest[0..1] is not a over-estimation of location which can be modified by function copy.