OpenDNSSEC-signer 1.2.1

/build/buildd-opendnssec_1.2.1.dfsg-1-mips-p9AT07/opendnssec-1.2.1.dfsg/signer/src/util/se_malloc.c

Go to the documentation of this file.
00001 /*
00002  * $Id: se_malloc.c 4294 2011-01-13 19:58:29Z jakob $
00003  *
00004  * Copyright (c) 2009 NLNet Labs. All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  * 1. Redistributions of source code must retain the above copyright
00010  *    notice, this list of conditions and the following disclaimer.
00011  * 2. Redistributions in binary form must reproduce the above copyright
00012  *    notice, this list of conditions and the following disclaimer in the
00013  *    documentation and/or other materials provided with the distribution.
00014  *
00015  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
00016  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00017  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00018  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
00019  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00020  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
00021  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00022  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
00023  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00024  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
00025  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026  *
00027  */
00028 
00034 #include "config.h"
00035 #include "util/se_malloc.h"
00036 #include "util/log.h"
00037 
00038 #include <stdlib.h> /* malloc(), calloc(), realloc(), free() */
00039 #include <string.h> /* strdup() */
00040 
00045 static void*
00046 se_assert_data(void* data)
00047 {
00048     if (!data) {
00049         se_fatal_exit("memory allocation failed (se): out of memory");
00050     }
00051     return data;
00052 }
00053 
00058 void*
00059 se_calloc(size_t nmemb, size_t size)
00060 {
00061     void* data = calloc(nmemb, size);
00062     return se_assert_data(data);
00063 }
00064 
00069 void* se_malloc(size_t size)
00070 {
00071     void* data = malloc(size);
00072     return se_assert_data(data);
00073 }
00074 
00079 void
00080 se_free(void* ptr)
00081 {
00082     if (ptr) {
00083         free(ptr);
00084     }
00085 }
00086 
00091 void*
00092 se_realloc(void* ptr, size_t size)
00093 {
00094     void* data = realloc(ptr, size);
00095     return se_assert_data(data);
00096 }
00097 
00102 void
00103 se_rbnode_free(ldns_rbnode_t* node)
00104 {
00105     if (node && node != LDNS_RBTREE_NULL) {
00106         se_rbnode_free(node->left);
00107         se_rbnode_free(node->right);
00108         free((void*)node);
00109     }
00110 }
00111 
00116 char*
00117 se_strdup(const char *s)
00118 {
00119     char* dup = NULL;
00120 
00121     if (s) {
00122         dup = strdup(s);
00123         if (!dup) {
00124             se_fatal_exit("memory allocation failed (strdup): out of memory");
00125         }
00126     }
00127     return dup;
00128 }