/* * Date: 17.12.2013 * Author: Thomas Ströder */ #include extern int __VERIFIER_nondet_int(void); /* Returns some null-terminated string. */ char* __VERIFIER_nondet_String(void) { int length = __VERIFIER_nondet_int(); if (length < 1) { length = 1; } char* nondetString = (char*) malloc(length * sizeof(char)); nondetString[length-1] = '\0'; return nondetString; } int (cstrncmp)(const char *s1, const char *s2, int n) { unsigned char uc1, uc2; /* Nothing to compare? Return zero. */ if (n == 0) return 0; /* Loop, comparing bytes. */ while (n-- > 0 && *s1 == *s2) { /* If we've run out of bytes or hit a null, return zero since we already know *s1 == *s2. */ if (n == 0 || *s1 == '\0') return 0; s1++; s2++; } uc1 = (*(unsigned char *) s1); uc2 = (*(unsigned char *) s2); return ((uc1 < uc2) ? -1 : (uc1 > uc2)); } int main() { return cstrncmp(__VERIFIER_nondet_String(),__VERIFIER_nondet_String(),__VERIFIER_nondet_int()); }