xmalloc.c revision 60573
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"
11RCSID("$Id: xmalloc.c,v 1.6 2000/04/14 10:30:34 markus Exp $");
12
13#include "ssh.h"
14
15void *
16xmalloc(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
24void *
25xrealloc(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
37void
38xfree(void *ptr)
39{
40	if (ptr == NULL)
41		fatal("xfree: NULL pointer given as argument");
42	free(ptr);
43}
44
45char *
46xstrdup(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