Lines Matching refs:ptr
74 static void sh_free(void *ptr);
76 static size_t sh_actual_size(char *ptr);
77 static int sh_allocated(const char *ptr);
157 void CRYPTO_secure_free(void *ptr, const char *file, int line) in CRYPTO_secure_free() argument
162 if (ptr == NULL) in CRYPTO_secure_free()
164 if (!CRYPTO_secure_allocated(ptr)) { in CRYPTO_secure_free()
165 CRYPTO_free(ptr, file, line); in CRYPTO_secure_free()
170 actual_size = sh_actual_size(ptr); in CRYPTO_secure_free()
171 CLEAR(ptr, actual_size); in CRYPTO_secure_free()
173 sh_free(ptr); in CRYPTO_secure_free()
176 CRYPTO_free(ptr, file, line); in CRYPTO_secure_free()
180 void CRYPTO_secure_clear_free(void *ptr, size_t num, in CRYPTO_secure_clear_free() argument
186 if (ptr == NULL) in CRYPTO_secure_clear_free()
188 if (!CRYPTO_secure_allocated(ptr)) { in CRYPTO_secure_clear_free()
189 OPENSSL_cleanse(ptr, num); in CRYPTO_secure_clear_free()
190 CRYPTO_free(ptr, file, line); in CRYPTO_secure_clear_free()
195 actual_size = sh_actual_size(ptr); in CRYPTO_secure_clear_free()
196 CLEAR(ptr, actual_size); in CRYPTO_secure_clear_free()
198 sh_free(ptr); in CRYPTO_secure_clear_free()
201 if (ptr == NULL) in CRYPTO_secure_clear_free()
203 OPENSSL_cleanse(ptr, num); in CRYPTO_secure_clear_free()
204 CRYPTO_free(ptr, file, line); in CRYPTO_secure_clear_free()
208 int CRYPTO_secure_allocated(const void *ptr) in CRYPTO_secure_allocated() argument
218 return sh_allocated(ptr); in CRYPTO_secure_allocated()
233 size_t CRYPTO_secure_actual_size(void *ptr) in CRYPTO_secure_actual_size() argument
240 actual_size = sh_actual_size(ptr); in CRYPTO_secure_actual_size()
303 static size_t sh_getlist(char *ptr) in sh_getlist() argument
306 size_t bit = (sh.arena_size + ptr - sh.arena) / sh.minsize; in sh_getlist()
318 static int sh_testbit(char *ptr, int list, unsigned char *table) in sh_testbit() argument
323 OPENSSL_assert(((ptr - sh.arena) & ((sh.arena_size >> list) - 1)) == 0); in sh_testbit()
324 bit = (ONE << list) + ((ptr - sh.arena) / (sh.arena_size >> list)); in sh_testbit()
329 static void sh_clearbit(char *ptr, int list, unsigned char *table) in sh_clearbit() argument
334 OPENSSL_assert(((ptr - sh.arena) & ((sh.arena_size >> list) - 1)) == 0); in sh_clearbit()
335 bit = (ONE << list) + ((ptr - sh.arena) / (sh.arena_size >> list)); in sh_clearbit()
341 static void sh_setbit(char *ptr, int list, unsigned char *table) in sh_setbit() argument
346 OPENSSL_assert(((ptr - sh.arena) & ((sh.arena_size >> list) - 1)) == 0); in sh_setbit()
347 bit = (ONE << list) + ((ptr - sh.arena) / (sh.arena_size >> list)); in sh_setbit()
353 static void sh_add_to_list(char **list, char *ptr) in sh_add_to_list() argument
358 OPENSSL_assert(WITHIN_ARENA(ptr)); in sh_add_to_list()
360 temp = (SH_LIST *)ptr; in sh_add_to_list()
370 *list = ptr; in sh_add_to_list()
373 static void sh_remove_from_list(char *ptr) in sh_remove_from_list() argument
377 temp = (SH_LIST *)ptr; in sh_remove_from_list()
572 static int sh_allocated(const char *ptr) in sh_allocated() argument
574 return WITHIN_ARENA(ptr) ? 1 : 0; in sh_allocated()
577 static char *sh_find_my_buddy(char *ptr, int list) in sh_find_my_buddy() argument
582 bit = (ONE << list) + (ptr - sh.arena) / (sh.arena_size >> list); in sh_find_my_buddy()
656 static void sh_free(void *ptr) in sh_free() argument
661 if (ptr == NULL) in sh_free()
663 OPENSSL_assert(WITHIN_ARENA(ptr)); in sh_free()
664 if (!WITHIN_ARENA(ptr)) in sh_free()
667 list = sh_getlist(ptr); in sh_free()
668 OPENSSL_assert(sh_testbit(ptr, list, sh.bittable)); in sh_free()
669 sh_clearbit(ptr, list, sh.bitmalloc); in sh_free()
670 sh_add_to_list(&sh.freelist[list], ptr); in sh_free()
673 while ((buddy = sh_find_my_buddy(ptr, list)) != NULL) { in sh_free()
674 OPENSSL_assert(ptr == sh_find_my_buddy(buddy, list)); in sh_free()
675 OPENSSL_assert(ptr != NULL); in sh_free()
676 OPENSSL_assert(!sh_testbit(ptr, list, sh.bitmalloc)); in sh_free()
677 sh_clearbit(ptr, list, sh.bittable); in sh_free()
678 sh_remove_from_list(ptr); in sh_free()
679 OPENSSL_assert(!sh_testbit(ptr, list, sh.bitmalloc)); in sh_free()
686 memset(ptr > buddy ? ptr : buddy, 0, sizeof(SH_LIST)); in sh_free()
687 if (ptr > buddy) in sh_free()
688 ptr = buddy; in sh_free()
690 OPENSSL_assert(!sh_testbit(ptr, list, sh.bitmalloc)); in sh_free()
691 sh_setbit(ptr, list, sh.bittable); in sh_free()
692 sh_add_to_list(&sh.freelist[list], ptr); in sh_free()
693 OPENSSL_assert(sh.freelist[list] == ptr); in sh_free()
697 static size_t sh_actual_size(char *ptr) in sh_actual_size() argument
701 OPENSSL_assert(WITHIN_ARENA(ptr)); in sh_actual_size()
702 if (!WITHIN_ARENA(ptr)) in sh_actual_size()
704 list = sh_getlist(ptr); in sh_actual_size()
705 OPENSSL_assert(sh_testbit(ptr, list, sh.bittable)); in sh_actual_size()