/* * Types of defects: Invalid memory access to already freed area(Dangling pointers) * Complexity: When using a pointer to int in a recursive function */ int invalid_memory_access_005 (int count) { int *ptr ; if (count ==0) { count = *ptr; /*Tool should detect this line as error*/ /*ERROR:Invalid memory access to already freed area*/ return 1; } else { ptr = (int *) calloc (count,sizeof(int)); if(ptr!=NULL) { *(ptr+(count-1)) = 5*count; free(ptr); } return (count * invalid_memory_access_005(count-1)); } }
void invalid_memory_access_main () { if (vflag == 1 || vflag ==888) { invalid_memory_access_001(); } if (vflag == 2 || vflag ==888) { invalid_memory_access_002(); } if (vflag == 3 || vflag ==888) { invalid_memory_access_003(); } if (vflag == 4 || vflag ==888) { invalid_memory_access_004(); } if (vflag == 5 || vflag ==888) { invalid_memory_access_005 (5); } if (vflag == 6 || vflag ==888) { invalid_memory_access_006(); } if (vflag == 7 || vflag ==888) { invalid_memory_access_007(); } if (vflag == 8 || vflag ==888) { invalid_memory_access_008(); } if (vflag == 9 || vflag ==888) { invalid_memory_access_009(); } if (vflag == 10 || vflag ==888) { invalid_memory_access_010(); } if (vflag == 11 || vflag ==888) { invalid_memory_access_011(); } if (vflag == 12 || vflag ==888) { invalid_memory_access_012(); } if (vflag == 13 || vflag ==888) { invalid_memory_access_013(); } if (vflag == 14 || vflag ==888) { int i; i = invalid_memory_access_014 (1); sink = i; } if (vflag == 15 || vflag ==888) { invalid_memory_access_015(); } if (vflag == 16 || vflag ==888) { invalid_memory_access_016(); } if (vflag == 17 || vflag ==888) { invalid_memory_access_017(); } }