Skip to content

Commit 3948e18

Browse files
author
Daniel Kroening
committed
pre-conditions for strings
1 parent c94548c commit 3948e18

File tree

4 files changed

+148
-77
lines changed

4 files changed

+148
-77
lines changed

src/ansi-c/library/inet.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ in_addr_t __VERIFIER_nondet_in_addr_t();
1212
in_addr_t inet_addr(const char *cp)
1313
{
1414
__CPROVER_HIDE:;
15-
(void)*cp;
1615
#ifdef __CPROVER_STRING_ABSTRACTION
17-
__CPROVER_assert(__CPROVER_is_zero_string(cp), "inet_addr zero-termination of argument");
16+
__CPROVER_precondition(__CPROVER_is_zero_string(cp),
17+
"inet_addr zero-termination of argument");
1818
#endif
19+
(void)*cp;
1920

2021
in_addr_t result=__VERIFIER_nondet_in_addr_t();
2122
return result;
@@ -37,11 +38,12 @@ int __VERIFIER_nondet_int();
3738
int inet_aton(const char *cp, struct in_addr *pin)
3839
{
3940
__CPROVER_HIDE:;
40-
(void)*cp;
41-
(void)*pin;
4241
#ifdef __CPROVER_STRING_ABSTRACTION
43-
__CPROVER_assert(__CPROVER_is_zero_string(cp), "inet_aton zero-termination of name argument");
42+
__CPROVER_precondition(__CPROVER_is_zero_string(cp),
43+
"inet_aton zero-termination of name argument");
4444
#endif
45+
(void)*cp;
46+
(void)*pin;
4547

4648
int result=__VERIFIER_nondet_int();
4749
return result;
@@ -63,10 +65,11 @@ in_addr_t __VERIFIER_nondet_in_addr_t();
6365
in_addr_t inet_network(const char *cp)
6466
{
6567
__CPROVER_HIDE:;
66-
(void)*cp;
6768
#ifdef __CPROVER_STRING_ABSTRACTION
68-
__CPROVER_assert(__CPROVER_is_zero_string(cp), "inet_network zero-termination of name argument");
69+
__CPROVER_precondition(__CPROVER_is_zero_string(cp),
70+
"inet_network zero-termination of name argument");
6971
#endif
72+
(void)*cp;
7073

7174
in_addr_t result=__VERIFIER_nondet_in_addr_t();
7275
return result;

src/ansi-c/library/netdb.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ __CPROVER_bool __VERIFIER_nondet___CPROVER_bool();
77
struct hostent *gethostbyname(const char *name)
88
{
99
__CPROVER_HIDE:;
10-
(void)*name;
1110
#ifdef __CPROVER_STRING_ABSTRACTION
12-
__CPROVER_assert(__CPROVER_is_zero_string(name), "gethostbyname zero-termination of name argument");
11+
__CPROVER_precondition(__CPROVER_is_zero_string(name),
12+
"gethostbyname zero-termination of name argument");
1313
#endif
14+
(void)*name;
1415

1516
__CPROVER_bool error=__VERIFIER_nondet___CPROVER_bool();
1617
if(error) return 0;

0 commit comments

Comments
 (0)