xref: /freebsd/crypto/openssh/xmalloc.c (revision daf1cffce2e07931f27c6c6998652e90df6ba87e)
1 /*
2  * Author: Tatu Ylonen <ylo@cs.hut.fi>
3  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4  *                    All rights reserved
5  * Created: Mon Mar 20 21:23:10 1995 ylo
6  * Versions of malloc and friends that check their results, and never return
7  * failure (they call fatal if they encounter an error).
8  */
9 
10 #include "includes.h"
11 RCSID("$Id: xmalloc.c,v 1.5 1999/11/24 00:26:04 deraadt Exp $");
12 
13 #include "ssh.h"
14 
15 void *
16 xmalloc(size_t size)
17 {
18 	void *ptr = malloc(size);
19 	if (ptr == NULL)
20 		fatal("xmalloc: out of memory (allocating %d bytes)", (int) size);
21 	return ptr;
22 }
23 
24 void *
25 xrealloc(void *ptr, size_t new_size)
26 {
27 	void *new_ptr;
28 
29 	if (ptr == NULL)
30 		fatal("xrealloc: NULL pointer given as argument");
31 	new_ptr = realloc(ptr, new_size);
32 	if (new_ptr == NULL)
33 		fatal("xrealloc: out of memory (new_size %d bytes)", (int) new_size);
34 	return new_ptr;
35 }
36 
37 void
38 xfree(void *ptr)
39 {
40 	if (ptr == NULL)
41 		fatal("xfree: NULL pointer given as argument");
42 	free(ptr);
43 }
44 
45 char *
46 xstrdup(const char *str)
47 {
48 	int len = strlen(str) + 1;
49 
50 	char *cp = xmalloc(len);
51 	strlcpy(cp, str, len);
52 	return cp;
53 }
54