~ubuntu-branches/ubuntu/edgy/openssh/edgy

« back to all changes in this revision

Viewing changes to xmalloc.c

  • Committer: Bazaar Package Importer
  • Author(s): Noah Meyerhans
  • Date: 2006-10-31 17:53:38 UTC
  • Revision ID: james.westby@ubuntu.com-20061031175338-kh299ada2qc2kzlb
Tags: upstream-3.8.1p1
ImportĀ upstreamĀ versionĀ 3.8.1p1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 * Versions of malloc and friends that check their results, and never return
 
6
 * failure (they call fatal if they encounter an error).
 
7
 *
 
8
 * As far as I am concerned, the code I have written for this software
 
9
 * can be used freely for any purpose.  Any derived versions of this
 
10
 * software must be clearly marked as such, and if the derived work is
 
11
 * incompatible with the protocol description in the RFC file, it must be
 
12
 * called by a name other than "ssh" or "Secure Shell".
 
13
 */
 
14
 
 
15
#include "includes.h"
 
16
RCSID("$OpenBSD: xmalloc.c,v 1.16 2001/07/23 18:21:46 stevesk Exp $");
 
17
 
 
18
#include "xmalloc.h"
 
19
#include "log.h"
 
20
 
 
21
void *
 
22
xmalloc(size_t size)
 
23
{
 
24
        void *ptr;
 
25
 
 
26
        if (size == 0)
 
27
                fatal("xmalloc: zero size");
 
28
        ptr = malloc(size);
 
29
        if (ptr == NULL)
 
30
                fatal("xmalloc: out of memory (allocating %lu bytes)", (u_long) size);
 
31
        return ptr;
 
32
}
 
33
 
 
34
void *
 
35
xrealloc(void *ptr, size_t new_size)
 
36
{
 
37
        void *new_ptr;
 
38
 
 
39
        if (new_size == 0)
 
40
                fatal("xrealloc: zero size");
 
41
        if (ptr == NULL)
 
42
                new_ptr = malloc(new_size);
 
43
        else
 
44
                new_ptr = realloc(ptr, new_size);
 
45
        if (new_ptr == NULL)
 
46
                fatal("xrealloc: out of memory (new_size %lu bytes)", (u_long) new_size);
 
47
        return new_ptr;
 
48
}
 
49
 
 
50
void
 
51
xfree(void *ptr)
 
52
{
 
53
        if (ptr == NULL)
 
54
                fatal("xfree: NULL pointer given as argument");
 
55
        free(ptr);
 
56
}
 
57
 
 
58
char *
 
59
xstrdup(const char *str)
 
60
{
 
61
        size_t len;
 
62
        char *cp;
 
63
 
 
64
        len = strlen(str) + 1;
 
65
        cp = xmalloc(len);
 
66
        strlcpy(cp, str, len);
 
67
        return cp;
 
68
}