@@ -96,8 +96,6 @@ AWS_EXTERN_C_END
96
96
# define AWS_POSTCONDITION1 (cond ) __CPROVER_assert((cond), # cond " check failed")
97
97
# define AWS_FATAL_POSTCONDITION2 (cond , explanation ) __CPROVER_assert((cond), (explanation))
98
98
# define AWS_FATAL_POSTCONDITION1 (cond ) __CPROVER_assert((cond), # cond " check failed")
99
- # define AWS_MEM_IS_READABLE (base , len ) __CPROVER_r_ok((base), (len))
100
- # define AWS_MEM_IS_WRITABLE (base , len ) __CPROVER_w_ok((base), (len))
101
99
#else
102
100
# define AWS_PRECONDITION2 (cond , expl ) AWS_ASSERT(cond)
103
101
# define AWS_PRECONDITION1 (cond ) AWS_ASSERT(cond)
@@ -107,12 +105,17 @@ AWS_EXTERN_C_END
107
105
# define AWS_POSTCONDITION1 (cond ) AWS_ASSERT(cond)
108
106
# define AWS_FATAL_POSTCONDITION2 (cond , expl ) AWS_FATAL_ASSERT(cond)
109
107
# define AWS_FATAL_POSTCONDITION1 (cond ) AWS_FATAL_ASSERT(cond)
108
+ #endif /* CBMC */
110
109
111
110
/* the C runtime does not give a way to check these properties,
112
- * but we can at least check that the pointer is valid */
113
- # define AWS_MEM_IS_READABLE (base , len ) (((len) == 0) || (base))
114
- # define AWS_MEM_IS_WRITABLE (base , len ) (((len) == 0) || (base))
115
- #endif /* CBMC */
111
+ * but we can at least check that the pointer is valid.
112
+ * these macros are intended to be used with CBMC proofs, but will not use CBMC
113
+ * intrinsics until https://github.com/diffblue/cbmc/issues/5194 is fixed.*/
114
+ #define AWS_MEM_IS_READABLE (base , len ) (((len) == 0) || (base))
115
+ #define AWS_MEM_IS_WRITABLE (base , len ) (((len) == 0) || (base))
116
+
117
+ #define __CPROVER_r_ok (base , len ) (AWS_MEM_IS_READABLE(base, len))
118
+ #define __CPROVER_w_ok (base , len ) (AWS_MEM_IS_WRITEABLE(base, len))
116
119
117
120
#define AWS_RETURN_ERROR_IF_IMPL (type , cond , err , explanation ) \
118
121
do { \
0 commit comments