version 1.8, 2000/09/07 20:27:55 |
version 1.8.2.5, 2001/09/27 00:15:43 |
|
|
* All rights reserved |
* All rights reserved |
* Versions of malloc and friends that check their results, and never return |
* Versions of malloc and friends that check their results, and never return |
* failure (they call fatal if they encounter an error). |
* failure (they call fatal if they encounter an error). |
* |
* |
* As far as I am concerned, the code I have written for this software |
* As far as I am concerned, the code I have written for this software |
* can be used freely for any purpose. Any derived versions of this |
* can be used freely for any purpose. Any derived versions of this |
* software must be clearly marked as such, and if the derived work is |
* software must be clearly marked as such, and if the derived work is |
|
|
#include "includes.h" |
#include "includes.h" |
RCSID("$OpenBSD$"); |
RCSID("$OpenBSD$"); |
|
|
#include "ssh.h" |
#include "xmalloc.h" |
|
#include "log.h" |
|
|
void * |
void * |
xmalloc(size_t size) |
xmalloc(size_t size) |
{ |
{ |
void *ptr = malloc(size); |
void *ptr; |
|
|
|
if (size == 0) |
|
fatal("xmalloc: zero size"); |
|
ptr = malloc(size); |
if (ptr == NULL) |
if (ptr == NULL) |
fatal("xmalloc: out of memory (allocating %d bytes)", (int) size); |
fatal("xmalloc: out of memory (allocating %lu bytes)", (u_long) size); |
return ptr; |
return ptr; |
} |
} |
|
|
|
|
{ |
{ |
void *new_ptr; |
void *new_ptr; |
|
|
|
if (new_size == 0) |
|
fatal("xrealloc: zero size"); |
if (ptr == NULL) |
if (ptr == NULL) |
fatal("xrealloc: NULL pointer given as argument"); |
new_ptr = malloc(new_size); |
new_ptr = realloc(ptr, new_size); |
else |
|
new_ptr = realloc(ptr, new_size); |
if (new_ptr == NULL) |
if (new_ptr == NULL) |
fatal("xrealloc: out of memory (new_size %d bytes)", (int) new_size); |
fatal("xrealloc: out of memory (new_size %lu bytes)", (u_long) new_size); |
return new_ptr; |
return new_ptr; |
} |
} |
|
|
|
|
char * |
char * |
xstrdup(const char *str) |
xstrdup(const char *str) |
{ |
{ |
int len = strlen(str) + 1; |
size_t len; |
|
char *cp; |
|
|
char *cp = xmalloc(len); |
len = strlen(str) + 1; |
|
cp = xmalloc(len); |
strlcpy(cp, str, len); |
strlcpy(cp, str, len); |
return cp; |
return cp; |
} |
} |