1/* $NetBSD: mem.c,v 1.2 2017/04/10 16:37:48 christos Exp $ */ 2/* $OpenBSD: mem.c,v 1.7 2015/02/16 20:53:34 jca Exp $ */ 3 4/* 5 * Copyright (c) 2003, Otto Moerbeek <otto@drijf.net> 6 * 7 * Permission to use, copy, modify, and distribute this software for any 8 * purpose with or without fee is hereby granted, provided that the above 9 * copyright notice and this permission notice appear in all copies. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18 */ 19#include <sys/cdefs.h> 20__RCSID("$NetBSD: mem.c,v 1.2 2017/04/10 16:37:48 christos Exp $"); 21 22#include <openssl/err.h> 23 24#include <err.h> 25#include <stdlib.h> 26#include <string.h> 27 28#include "extern.h" 29 30struct number * 31new_number(void) 32{ 33 struct number *n; 34 35 n = bmalloc(sizeof(*n)); 36 n->scale = 0; 37 n->number = BN_new(); 38 if (n->number == NULL) 39 err(1, NULL); 40 return n; 41} 42 43void 44free_number(struct number *n) 45{ 46 BN_free(n->number); 47 free(n); 48} 49 50struct number * 51dup_number(const struct number *a) 52{ 53 struct number *n; 54 55 n = bmalloc(sizeof(*n)); 56 n->scale = a->scale; 57 n->number = BN_dup(a->number); 58 bn_checkp(n->number); 59 return n; 60} 61 62void * 63bmalloc(size_t sz) 64{ 65 void *p; 66 67 p = malloc(sz); 68 if (p == NULL) 69 err(1, NULL); 70 return p; 71} 72 73void * 74breallocarray(void *p, size_t nmemb, size_t size) 75{ 76 int ret = reallocarr(&p, nmemb, size); 77 if (ret) 78 errc(1, ret, NULL); 79 return p; 80} 81 82char * 83bstrdup(const char *p) 84{ 85 char *q; 86 87 q = strdup(p); 88 if (q == NULL) 89 err(1, NULL); 90 return q; 91} 92 93void 94bn_check(int x) \ 95{ 96 if (x == 0) 97 err(1, "big number failure %lx", ERR_get_error()); 98} 99 100void 101bn_checkp(const void *p) \ 102{ 103 if (p == NULL) 104 err(1, "allocation failure %lx", ERR_get_error()); 105} 106