1 /* $OpenBSD: malloc-wrapper.c,v 1.2 2014/04/17 20:44:45 tedu Exp $ */
2 /*
3  * Copyright (c) 2014 Bob Beck
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17 #include <stdio.h>
18 #include <stdlib.h>
19 #include <string.h>
20 
21 int
22 CRYPTO_set_mem_functions(void *(*m)(size_t), void *(*r)(void *, size_t),
23     void (*f)(void *))
24 {
25 	return 0;
26 }
27 
28 int
29 CRYPTO_set_mem_ex_functions(void *(*m)(size_t, const char *, int),
30     void *(*r)(void *, size_t, const char *, int), void (*f)(void *))
31 {
32 	return 0;
33 }
34 
35 int
36 CRYPTO_set_locked_mem_functions(void *(*m)(size_t), void (*f)(void *))
37 {
38 	return 0;
39 }
40 
41 int
42 CRYPTO_set_locked_mem_ex_functions(void *(*m)(size_t, const char *, int),
43     void (*f)(void *))
44 {
45 	return 0;
46 }
47 
48 int
49 CRYPTO_set_mem_debug_functions(void (*m)(void *, int, const char *, int, int),
50     void (*r)(void *, void *, int, const char *, int, int),
51     void (*f)(void *, int), void (*so)(long), long (*go)(void))
52 {
53 	return 0;
54 }
55 
56 
57 void
58 CRYPTO_get_mem_functions(void *(**m)(size_t), void *(**r)(void *, size_t),
59     void (**f)(void *))
60 {
61 	if (m != NULL)
62 		*m = malloc;
63 	if (r != NULL)
64 		*r = realloc;
65 	if (f != NULL)
66 		*f = free;
67 }
68 
69 void
70 CRYPTO_get_mem_ex_functions(void *(**m)(size_t, const char *, int),
71     void *(**r)(void *, size_t, const char *, int), void (**f)(void *))
72 {
73 	if (m != NULL)
74 		*m = NULL;
75 	if (r != NULL)
76 		*r = NULL;
77 	if (f != NULL)
78 		*f = free;
79 }
80 
81 void
82 CRYPTO_get_locked_mem_functions(void *(**m)(size_t), void (**f)(void *))
83 {
84 	if (m != NULL)
85 		*m = malloc;
86 	if (f != NULL)
87 		*f = free;
88 }
89 
90 void
91 CRYPTO_get_locked_mem_ex_functions(void *(**m)(size_t, const char *, int),
92     void (**f)(void *))
93 {
94 	if (m != NULL)
95 		*m = NULL;
96 	if (f != NULL)
97 		*f = free;
98 }
99 
100 void
101 CRYPTO_get_mem_debug_functions(void (**m)(void *, int, const char *, int, int),
102     void (**r)(void *, void *, int, const char *, int, int),
103     void (**f)(void *, int), void (**so)(long), long (**go)(void))
104 {
105 	if (m != NULL)
106 		*m = NULL;
107 	if (r != NULL)
108 		*r = NULL;
109 	if (f != NULL)
110 		*f = NULL;
111 	if (so != NULL)
112 		*so = NULL;
113 	if (go != NULL)
114 		*go = NULL;
115 }
116 
117 
118 void *
119 CRYPTO_malloc_locked(int num, const char *file, int line)
120 {
121 	if (num <= 0)
122 		return NULL;
123 	return malloc(num);
124 }
125 
126 void
127 CRYPTO_free_locked(void *ptr)
128 {
129 	free(ptr);
130 }
131 
132 void *
133 CRYPTO_malloc(int num, const char *file, int line)
134 {
135 	if (num <= 0)
136 		return NULL;
137 	return malloc(num);
138 }
139 
140 char *
141 CRYPTO_strdup(const char *str, const char *file, int line)
142 {
143 	return strdup(str);
144 }
145 
146 void *
147 CRYPTO_realloc(void *ptr, int num, const char *file, int line)
148 {
149 	if (num <= 0)
150 		return NULL;
151 
152 	return realloc(ptr, num);
153 }
154 
155 void *
156 CRYPTO_realloc_clean(void *ptr, int old_len, int num, const char *file,
157     int line)
158 {
159 	void *ret = NULL;
160 
161 	if (num <= 0)
162 		return NULL;
163 	if (num < old_len)
164 		return NULL; /* original does not support shrinking */
165 	ret = malloc(num);
166 	if (ret && ptr && old_len > 0) {
167 		memcpy(ret, ptr, old_len);
168 		explicit_bzero(ptr, old_len);
169 		free(ptr);
170 	}
171 	return ret;
172 }
173 
174 void
175 CRYPTO_free(void *ptr)
176 {
177 	free(ptr);
178 }
179 
180 void *
181 CRYPTO_remalloc(void *a, int num, const char *file, int line)
182 {
183 	free(a);
184 	return malloc(num);
185 }
186 
187 void
188 CRYPTO_set_mem_debug_options(long bits)
189 {
190 	return;
191 }
192 
193 long
194 CRYPTO_get_mem_debug_options(void)
195 {
196 	return 0;
197 }
198