Open
Description
Let's say that an object is allocated in one place (place A
) and its pointer is passed through an external interface (e.g., user-kernel boundary) to an another place (place B
).
In this case where place B
cannot keep track of place A
's objects, how can place B
assume that the passed pointer is valid?
If I try to use the passed pointer directly, it generates a series of dereference failure such as
Failed Checks: dereference failure: pointer NULL
Failed Checks: dereference failure: pointer invalid
Failed Checks: dereference failure: deallocated dynamic object
Failed Checks: dereference failure: dead object
Failed Checks: dereference failure: pointer outside object bounds
Failed Checks: dereference failure: invalid integer address
If I treat the passed pointer as dynamic object with __CPROVER_assume(__CPROVER_DYNAMIC_OBJECT(p));
,
one failure still remains.
Failed Checks: dereference failure: pointer outside object bounds
How can I remove that remaining failure?
Also, I wonder that treating the passed pointer with __CPROVER_assume(__CPROVER_DYNAMIC_OBJECT(p));
is okay.
CBMC version: cbmc-5.77.0
Operating system: Ubuntu 20.04