#include <utilities/SecBuffer.h>
#include "utilities_regressions.h"
#define kTestCount (2 * 12 + 3 * 12)
const uint8_t testBytes[] = { 0xD0, 0xD0, 0xBA, 0xAD };
static void
tests(void) {
for(size_t testSize = 1023; testSize < 2 * 1024 * 1024; testSize *= 2) {
PerformWithBuffer(testSize, ^(size_t size, uint8_t *buffer) {
ok(buffer, "got buffer");
ok(size == testSize, "buffer size");
uint64_t *scribbleLocation = (uint64_t *) (buffer + testSize - sizeof(testBytes));
bcopy(testBytes, scribbleLocation, sizeof(testBytes));
});
}
for(size_t testSize = 1023; testSize < 2 * 1024 * 1024; testSize *= 2) {
__block uint64_t *scribbleLocation = NULL;
PerformWithBufferAndClear(testSize, ^(size_t size, uint8_t *buffer) {
ok(buffer, "got buffer");
ok(size == testSize, "buffer size");
scribbleLocation = (uint64_t *) (buffer + testSize - sizeof(testBytes));
bcopy(testBytes, scribbleLocation, sizeof(testBytes));
});
SKIP: {
skip("memory might be unmapped leading to a crash", 1, false);
ok(*scribbleLocation == 0, "Was erased");
}
}
}
int
su_08_secbuffer(int argc, char *const *argv) {
plan_tests(kTestCount);
tests();
return 0;
}