OpenDNSSEC-enforcer  1.3.15
memory.c
Go to the documentation of this file.
1 /*
2  * $Id: memory.c 763 2009-05-22 13:03:15Z sion $
3  *
4  * Copyright (c) 2008-2009 Nominet UK. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
21  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
25  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  *
27  */
28 
29 /*+
30  * Filename: memory.c
31  *
32  * Description:
33  * Wrappers around memory allocation routines. If any fail,
34  * the program will write a memory exhaustion error to stderr
35  * and terminate.
36 -*/
37 
38 #include <stdio.h>
39 #include <stdlib.h>
40 
41 #include "ksm/memory.h"
42 #include "ksm/ksmdef.h"
43 #include "ksm/message.h"
44 
45 /*+
46  * MemMalloc - Allocate Memory
47  * MemCalloc - Allocate Contiguous Memory
48  * MemRealloc - Reallocate Memory
49  *
50  * Description:
51  * Wrapper routines around the Unix memory allocation routines. If
52  * an allocation routine returns null, an error is logged and the
53  * program exits.
54  *
55  * MemFree is also defined, but as a macro to allow the passed element
56  * to be zeroed. The definition can be found in the header file.
57 -*/
58 
59 void* MemMalloc(size_t size)
60 {
61  void *ptr = malloc(size);
62  if (ptr == NULL) {
63  MsgLog(KSM_STMTALLOC, "malloc: Out of swap space");
64  fprintf(stderr, "malloc: Out of swap space");
65  exit(1);
66  }
67  return ptr;
68 }
69 
70 void* MemCalloc(size_t nmemb, size_t size)
71 {
72  void *ptr = calloc(nmemb, size);
73  if (ptr == NULL) {
74  MsgLog(KSM_STMTALLOC, "calloc: Out of swap space");
75  fprintf(stderr, "calloc: Out of swap space");
76  exit(1);
77  }
78  return ptr;
79 }
80 
81 void* MemRealloc(void *ptr, size_t size)
82 {
83  void *ptr1 = realloc(ptr, size);
84  if (ptr1 == NULL) {
85  MsgLog(KSM_STMTALLOC, "realloc: Out of swap space");
86  fprintf(stderr, "realloc: Out of swap space");
87  exit(1);
88  }
89  return ptr1;
90 }