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