// S : tags c sym $TAGS // S : expect --result valid // S : cc -o test.bc $CC_OPT $file // S : verify --symbolic --solver $solver $V_OPT test.bc // N : V : CC_OPT : V_OPT : TAGS : RESULT // V : big : -DNUM=2147483647 : : big : valid // V : big.10000 : -DNUM=10000 : : big : valid // V : small.100 : -DNUM=100 : : : valid // V : small.10 : -DNUM=10 : : : valid // V : big.1000 : -DNUM=1000 : : big : valid extern void __VERIFIER_error(void); extern void __VERIFIER_assume(int); void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: __VERIFIER_error(); } return; } int __VERIFIER_nondet_int(); int main () { int MAXPATHLEN; int pathbuf_off; /* Char *bound = pathbuf + sizeof(pathbuf)/sizeof(*pathbuf) - 1; */ int bound_off; /* glob2's local vars */ /* Char *p; */ int glob2_p_off; int glob2_pathbuf_off; int glob2_pathlim_off; MAXPATHLEN = __VERIFIER_nondet_int(); if(MAXPATHLEN > 0 && MAXPATHLEN < NUM); else goto END; pathbuf_off = 0; bound_off = pathbuf_off + (MAXPATHLEN + 1) - 1; glob2_pathbuf_off = pathbuf_off; glob2_pathlim_off = bound_off; for (glob2_p_off = glob2_pathbuf_off; glob2_p_off <= glob2_pathlim_off; glob2_p_off++) { /* OK */ __VERIFIER_assert (0 <= glob2_p_off ); __VERIFIER_assert (glob2_p_off < MAXPATHLEN + 1); } END: return 0; }