/* * Copyright (c) 2014 Apple Inc. All Rights Reserved. * * @APPLE_LICENSE_HEADER_START@ * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in * compliance with the License. Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this * file. * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. * * @APPLE_LICENSE_HEADER_END@ */ #include <utilities/SecBuffer.h> #include "utilities_regressions.h" #define kTestCount (2 * 12 + 3 * 12) 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"); }); } 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(uint64_t)); *scribbleLocation = 0xD0D0BAAD; }); 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; }