Tor  0.4.7.0-alpha-dev
Macros | Functions
malloc.c File Reference

Wrappers for C malloc code, and replacements for items that may be missing. More...

#include "orconfig.h"
#include <stdlib.h>
#include <string.h>
#include "lib/testsupport/testsupport.h"
#include "lib/malloc/malloc.h"
#include "lib/cc/torint.h"
#include "lib/err/torerr.h"

Go to the source code of this file.

Macros

#define UTIL_MALLOC_PRIVATE
 
#define SQRT_SIZE_MAX_P1   (((size_t)1) << (sizeof(size_t)*4))
 

Functions

void * tor_malloc_ (size_t size)
 
void * tor_malloc_zero_ (size_t size)
 
STATIC int size_mul_check (const size_t x, const size_t y)
 
void * tor_calloc_ (size_t nmemb, size_t size)
 
void * tor_realloc_ (void *ptr, size_t size)
 
void * tor_reallocarray_ (void *ptr, size_t sz1, size_t sz2)
 
char * tor_strdup_ (const char *s)
 
char * tor_strndup_ (const char *s, size_t n)
 
void * tor_memdup_ (const void *mem, size_t len)
 
void * tor_memdup_nulterm_ (const void *mem, size_t len)
 
void tor_free_ (void *mem)
 

Detailed Description

Wrappers for C malloc code, and replacements for items that may be missing.

Definition in file malloc.c.

Function Documentation

◆ size_mul_check()

STATIC int size_mul_check ( const size_t  x,
const size_t  y 
)

Return non-zero if and only if the product of the arguments is exact, and cannot overflow.

Definition at line 86 of file malloc.c.

◆ tor_calloc_()

void* tor_calloc_ ( size_t  nmemb,
size_t  size 
)

Allocate a chunk of nmemb*size bytes of memory, fill the memory with zero bytes, and return a pointer to the result. Log and terminate the process on error. (Same as calloc(nmemb,size), but never returns NULL.) The second argument (size) should preferably be non-zero and a compile-time constant.

Definition at line 107 of file malloc.c.

◆ tor_free_()

void tor_free_ ( void *  mem)

Helper for places that need to take a function pointer to the right spelling of "free()".

Definition at line 227 of file malloc.c.

Referenced by free_execve_args(), smartlist_uniq_digests(), smartlist_uniq_digests256(), smartlist_uniq_strings(), sort_version_list(), tor_run_main(), and tor_str_wipe_and_free_().

◆ tor_malloc_()

void* tor_malloc_ ( size_t  size)

Allocate a chunk of size bytes of memory, and return a pointer to result. On error, log and terminate the process. (Same as malloc(size), but never returns NULL.)

Definition at line 32 of file malloc.c.

Referenced by tor_malloc_zero_(), and tor_run_main().

◆ tor_malloc_zero_()

void* tor_malloc_zero_ ( size_t  size)

Allocate a chunk of size bytes of memory, fill the memory with zero bytes, and return a pointer to the result. Log and terminate the process on error. (Same as calloc(size,1), but never returns NULL.)

Definition at line 63 of file malloc.c.

◆ tor_memdup_()

void* tor_memdup_ ( const void *  mem,
size_t  len 
)

Allocate a chunk of len bytes, with the same contents as the len bytes starting at mem.

Definition at line 200 of file malloc.c.

◆ tor_memdup_nulterm_()

void* tor_memdup_nulterm_ ( const void *  mem,
size_t  len 
)

As tor_memdup(), but add an extra 0 byte at the end of the resulting memory.

Definition at line 213 of file malloc.c.

◆ tor_realloc_()

void* tor_realloc_ ( void *  ptr,
size_t  size 
)

Change the size of the memory block pointed to by ptr to size bytes long; return the new memory block. On error, log and terminate. (Like realloc(ptr,size), but never returns NULL.)

Definition at line 118 of file malloc.c.

Referenced by tor_run_main().

◆ tor_reallocarray_()

void* tor_reallocarray_ ( void *  ptr,
size_t  sz1,
size_t  sz2 
)

Try to realloc ptr so that it takes up sz1 * sz2 bytes. Check for overflow. Unlike other allocation functions, return NULL on overflow.

Definition at line 146 of file malloc.c.

◆ tor_strdup_()

char* tor_strdup_ ( const char *  s)

Return a newly allocated copy of the NUL-terminated string s. On error, log and terminate. (Like strdup(s), but never returns NULL.)

Definition at line 160 of file malloc.c.

◆ tor_strndup_()

char* tor_strndup_ ( const char *  s,
size_t  n 
)

Allocate and return a new string containing the first n characters of s. If s is longer than n characters, only the first n are copied. The result is always NUL-terminated. (Like strndup(s,n), but never returns NULL.)

Definition at line 182 of file malloc.c.