Lines Matching defs:ptr

89 static void sh_free(void *ptr);
91 static size_t sh_actual_size(char *ptr);
92 static int sh_allocated(const char *ptr);
172 void CRYPTO_secure_free(void *ptr, const char *file, int line)
177 if (ptr == NULL)
179 if (!CRYPTO_secure_allocated(ptr)) {
180 CRYPTO_free(ptr, file, line);
185 actual_size = sh_actual_size(ptr);
186 CLEAR(ptr, actual_size);
188 sh_free(ptr);
191 CRYPTO_free(ptr, file, line);
195 void CRYPTO_secure_clear_free(void *ptr, size_t num,
201 if (ptr == NULL)
203 if (!CRYPTO_secure_allocated(ptr)) {
204 OPENSSL_cleanse(ptr, num);
205 CRYPTO_free(ptr, file, line);
210 actual_size = sh_actual_size(ptr);
211 CLEAR(ptr, actual_size);
213 sh_free(ptr);
216 if (ptr == NULL)
218 OPENSSL_cleanse(ptr, num);
219 CRYPTO_free(ptr, file, line);
223 int CRYPTO_secure_allocated(const void *ptr)
233 return sh_allocated(ptr);
248 size_t CRYPTO_secure_actual_size(void *ptr)
255 actual_size = sh_actual_size(ptr);
318 static size_t sh_getlist(char *ptr)
321 size_t bit = (sh.arena_size + ptr - sh.arena) / sh.minsize;
333 static int sh_testbit(char *ptr, int list, unsigned char *table)
338 OPENSSL_assert(((ptr - sh.arena) & ((sh.arena_size >> list) - 1)) == 0);
339 bit = (ONE << list) + ((ptr - sh.arena) / (sh.arena_size >> list));
344 static void sh_clearbit(char *ptr, int list, unsigned char *table)
349 OPENSSL_assert(((ptr - sh.arena) & ((sh.arena_size >> list) - 1)) == 0);
350 bit = (ONE << list) + ((ptr - sh.arena) / (sh.arena_size >> list));
356 static void sh_setbit(char *ptr, int list, unsigned char *table)
361 OPENSSL_assert(((ptr - sh.arena) & ((sh.arena_size >> list) - 1)) == 0);
362 bit = (ONE << list) + ((ptr - sh.arena) / (sh.arena_size >> list));
368 static void sh_add_to_list(char **list, char *ptr)
373 OPENSSL_assert(WITHIN_ARENA(ptr));
375 temp = (SH_LIST *)ptr;
385 *list = ptr;
388 static void sh_remove_from_list(char *ptr)
392 temp = (SH_LIST *)ptr;
587 static int sh_allocated(const char *ptr)
589 return WITHIN_ARENA(ptr) ? 1 : 0;
592 static char *sh_find_my_buddy(char *ptr, int list)
597 bit = (ONE << list) + (ptr - sh.arena) / (sh.arena_size >> list);
671 static void sh_free(void *ptr)
676 if (ptr == NULL)
678 OPENSSL_assert(WITHIN_ARENA(ptr));
679 if (!WITHIN_ARENA(ptr))
682 list = sh_getlist(ptr);
683 OPENSSL_assert(sh_testbit(ptr, list, sh.bittable));
684 sh_clearbit(ptr, list, sh.bitmalloc);
685 sh_add_to_list(&sh.freelist[list], ptr);
688 while ((buddy = sh_find_my_buddy(ptr, list)) != NULL) {
689 OPENSSL_assert(ptr == sh_find_my_buddy(buddy, list));
690 OPENSSL_assert(ptr != NULL);
691 OPENSSL_assert(!sh_testbit(ptr, list, sh.bitmalloc));
692 sh_clearbit(ptr, list, sh.bittable);
693 sh_remove_from_list(ptr);
694 OPENSSL_assert(!sh_testbit(ptr, list, sh.bitmalloc));
701 memset(ptr > buddy ? ptr : buddy, 0, sizeof(SH_LIST));
702 if (ptr > buddy)
703 ptr = buddy;
705 OPENSSL_assert(!sh_testbit(ptr, list, sh.bitmalloc));
706 sh_setbit(ptr, list, sh.bittable);
707 sh_add_to_list(&sh.freelist[list], ptr);
708 OPENSSL_assert(sh.freelist[list] == ptr);
712 static size_t sh_actual_size(char *ptr)
716 OPENSSL_assert(WITHIN_ARENA(ptr));
717 if (!WITHIN_ARENA(ptr))
719 list = sh_getlist(ptr);
720 OPENSSL_assert(sh_testbit(ptr, list, sh.bittable));