version 1.6.2.4, 2001/03/21 18:53:21 |
version 1.7, 2000/06/20 01:39:45 |
|
|
* Author: Tatu Ylonen <ylo@cs.hut.fi> |
* Author: Tatu Ylonen <ylo@cs.hut.fi> |
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
* All rights reserved |
* All rights reserved |
|
* Created: Mon Mar 20 21:23:10 1995 ylo |
* 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 |
|
* 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 |
|
* incompatible with the protocol description in the RFC file, it must be |
|
* called by a name other than "ssh" or "Secure Shell". |
|
*/ |
*/ |
|
|
#include "includes.h" |
#include "includes.h" |
RCSID("$OpenBSD$"); |
RCSID("$OpenBSD$"); |
|
|
#include "xmalloc.h" |
#include "ssh.h" |
#include "log.h" |
|
|
|
void * |
void * |
xmalloc(size_t size) |
xmalloc(size_t size) |
{ |
{ |
void *ptr; |
void *ptr = malloc(size); |
|
|
if (size == 0) |
|
fatal("xmalloc: zero size"); |
|
ptr = malloc(size); |
|
if (ptr == NULL) |
if (ptr == NULL) |
fatal("xmalloc: out of memory (allocating %lu bytes)", (u_long) size); |
fatal("xmalloc: out of memory (allocating %d bytes)", (int) 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"); |
fatal("xrealloc: NULL pointer given as argument"); |
new_ptr = realloc(ptr, new_size); |
new_ptr = realloc(ptr, new_size); |
if (new_ptr == NULL) |
if (new_ptr == NULL) |
fatal("xrealloc: out of memory (new_size %lu bytes)", (u_long) new_size); |
fatal("xrealloc: out of memory (new_size %d bytes)", (int) new_size); |
return new_ptr; |
return new_ptr; |
} |
} |
|
|
|
|
char * |
char * |
xstrdup(const char *str) |
xstrdup(const char *str) |
{ |
{ |
size_t len = strlen(str) + 1; |
int len = strlen(str) + 1; |
char *cp; |
|
|
|
if (len == 0) |
char *cp = xmalloc(len); |
fatal("xstrdup: zero size"); |
|
cp = xmalloc(len); |
|
strlcpy(cp, str, len); |
strlcpy(cp, str, len); |
return cp; |
return cp; |
} |
} |