You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, memcpy() does not seem to take pointer offsets into account, e.g. memcpy(dest + 1, src + 1, sizeof(int)) compiles to the equivalent of memcpy(dest, src, sizeof(int)).
void test()
{
int a = 1;
int b = 2;
int dest[2];
memcpy(dest, &a, sizeof(int));
memcpy(dest + 1, &b, sizeof(int));
assert(dest[1] == b); // Erroneously fails in CBMC 5.8, but works as expected in CBMC 5.6
}
In CBMC 5.6, memcpy() was implemented using a loop, but I think in 5.7 or 5.8 this was changed to using __CPROVER_array_copy/__CPROVER_array_replace. Could this have anything to do with the error?