char* slapi_ch_strdup ( const char* s1) { char* newmem; /* strdup pukes on NULL strings...bail out now */ if(NULL == s1) return NULL; newmem = strdup (s1); if (newmem == NULL) { int oserr = errno; oom_occurred(); slapi_log_error( SLAPI_LOG_FATAL, SLAPD_MODULE, "strdup of %lu characters failed; OS error %d (%s)%s\n", (unsigned long)strlen(s1), oserr, slapd_system_strerror( oserr ), oom_advice ); exit (1); } if(!counters_created) { create_counters(); counters_created= 1; } PR_INCREMENT_COUNTER(slapi_ch_counter_strdup); PR_INCREMENT_COUNTER(slapi_ch_counter_created); PR_INCREMENT_COUNTER(slapi_ch_counter_exist); #if defined(_WIN32) && defined(DEBUG) if(recording) { add_memory_record(newmem,strlen(s1)+1); } #endif return newmem; }
struct berval* slapi_ch_bvdup (const struct berval* v) { struct berval* newberval = ber_bvdup ((struct berval *)v); if (newberval == NULL) { int oserr = errno; oom_occurred(); slapi_log_error( SLAPI_LOG_FATAL, SLAPD_MODULE, "ber_bvdup of %lu bytes failed; OS error %d (%s)%s\n", (unsigned long)v->bv_len, oserr, slapd_system_strerror( oserr ), oom_advice ); exit( 1 ); } return newberval; }
static char * slapi_ch_calloc_core( unsigned long lsize ) { char *newmem; if ( (newmem = (char *) calloc( 1, lsize )) == NULL ) { int oserr = errno; oom_occurred(); slapi_log_err(SLAPI_LOG_ERR, SLAPD_MODULE, "calloc of %lu bytes failed; OS error %d (%s)%s\n", lsize, oserr, slapd_system_strerror( oserr ), oom_advice ); exit( 1 ); } *(unsigned long *)newmem = lsize; newmem += sizeof(unsigned long); return newmem; }
char * slapi_ch_calloc( unsigned long nelem, unsigned long size ) { char *newmem; if (size <= 0) { log_negative_alloc_msg( "calloc", "bytes", size ); return 0; } if (nelem <= 0) { log_negative_alloc_msg( "calloc", "elements", nelem ); return 0; } if ( (newmem = (char *) calloc( nelem, size )) == NULL ) { int oserr = errno; oom_occurred(); slapi_log_error( SLAPI_LOG_FATAL, SLAPD_MODULE, "calloc of %lu elems of %lu bytes failed; OS error %d (%s)%s\n", nelem, size, oserr, slapd_system_strerror( oserr ), oom_advice ); exit( 1 ); } if(!counters_created) { create_counters(); counters_created= 1; } PR_INCREMENT_COUNTER(slapi_ch_counter_calloc); PR_INCREMENT_COUNTER(slapi_ch_counter_created); PR_INCREMENT_COUNTER(slapi_ch_counter_exist); #if defined(_WIN32) && defined(DEBUG) if(recording) { add_memory_record(newmem,size); } #endif return( newmem ); }
char * slapi_ch_mmap(unsigned long len) { char *newmem; long sc_page_size = config_get_system_page_size(); int sc_page_bits = config_get_system_page_bits(); unsigned long roundup = (len&(sc_page_size-1))?(((len>>sc_page_bits)+1)<<sc_page_bits):len; if ( (newmem = (char *)mmap(NULL, roundup, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0/*ignored */)) == MAP_FAILED ) { int oserr = errno; oom_occurred(); slapi_log_err(SLAPI_LOG_ERR, SLAPD_MODULE, "mmap of %lu bytes failed; OS error %d (%s)%s\n", roundup, oserr, slapd_system_strerror( oserr ), oom_advice ); exit( 1 ); } *(unsigned long *)newmem = roundup; newmem += sizeof(unsigned long); return( newmem ); }
static char * slapi_ch_mmap_no_roundup( unsigned long size) { char *newmem; unsigned long mysize; if ( (newmem = (char *)mmap(NULL, size + sizeof(unsigned long), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0/*ignored */)) == MAP_FAILED ) { int oserr = errno; oom_occurred(); slapi_log_err(SLAPI_LOG_ERR, SLAPD_MODULE, "mmap of %lu bytes failed; OS error %d (%s)%s\n", size + sizeof(unsigned long), oserr, slapd_system_strerror( oserr ), oom_advice ); exit( 1 ); } *(unsigned long *)newmem = size; newmem += sizeof(unsigned long); return newmem; }