]> git.saurik.com Git - apple/xnu.git/blob - osfmk/corecrypto/cc_abort.c
xnu-7195.101.1.tar.gz
[apple/xnu.git] / osfmk / corecrypto / cc_abort.c
1 /*
2 * cc_abort.c
3 * corecrypto
4 *
5 * Created on 3/9/2019
6 *
7 * Copyright (c) 2019 Apple Inc. All rights reserved.
8 *
9 *
10 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
11 *
12 * This file contains Original Code and/or Modifications of Original Code
13 * as defined in and that are subject to the Apple Public Source License
14 * Version 2.0 (the 'License'). You may not use this file except in
15 * compliance with the License. The rights granted to you under the License
16 * may not be used to create, or enable the creation or redistribution of,
17 * unlawful or unlicensed copies of an Apple operating system, or to
18 * circumvent, violate, or enable the circumvention or violation of, any
19 * terms of an Apple operating system software license agreement.
20 *
21 * Please obtain a copy of the License at
22 * http://www.opensource.apple.com/apsl/ and read it before using this file.
23 *
24 * The Original Code and all software distributed under the License are
25 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
26 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
27 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
28 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
29 * Please see the License for the specific language governing rights and
30 * limitations under the License.
31 *
32 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
33 */
34
35 #include <corecrypto/cc_priv.h>
36
37 //cc_abort() is implemented to comply with by FIPS 140-2, when DRBG produces
38 //two equal consecutive blocks.
39
40 #if !CC_PROVIDES_ABORT
41
42 #error "This environment does not provide an abort()/panic()-like function"
43
44 #elif CC_KERNEL
45
46 #include <kern/debug.h>
47 void
48 cc_abort(const char * msg)
49 {
50 panic("%s", msg);
51 }
52
53 #elif CC_USE_L4
54
55 #include <sys/panic.h>
56 #include <stdarg.h>
57 void
58 cc_abort(const char * msg)
59 {
60 sys_panic(msg);
61 }
62
63 #elif CC_RTKIT
64
65 #include <RTK_platform.h>
66 void
67 cc_abort(const char * msg)
68 {
69 RTK_abort("%s", msg);
70 }
71
72 #else
73
74 #include <stdlib.h>
75 void
76 cc_abort(const char * msg CC_UNUSED)
77 {
78 abort();
79 }
80
81 #endif