1226645Sattilio/* $NetBSD: mem.c,v 1.2 2017/04/10 16:37:48 christos Exp $ */ 2246726Sattilio/* $OpenBSD: mem.c,v 1.7 2015/02/16 20:53:34 jca Exp $ */ 3226930Sjeff 4226645Sattilio/* 5226645Sattilio * Copyright (c) 2003, Otto Moerbeek <otto@drijf.net> 6226645Sattilio * 7226645Sattilio * Permission to use, copy, modify, and distribute this software for any 8226645Sattilio * purpose with or without fee is hereby granted, provided that the above 9226645Sattilio * copyright notice and this permission notice appear in all copies. 10226645Sattilio * 11226645Sattilio * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12226645Sattilio * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13226645Sattilio * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14226645Sattilio * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15226645Sattilio * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16226645Sattilio * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17226645Sattilio * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18226645Sattilio */ 19226645Sattilio#include <sys/cdefs.h> 20226645Sattilio__RCSID("$NetBSD: mem.c,v 1.2 2017/04/10 16:37:48 christos Exp $"); 21226645Sattilio 22226645Sattilio#include <openssl/err.h> 23226645Sattilio 24226645Sattilio#include <err.h> 25226645Sattilio#include <stdlib.h> 26226645Sattilio#include <string.h> 27226645Sattilio 28226645Sattilio#include "extern.h" 29226645Sattilio 30226645Sattiliostruct number * 31246726Sattilionew_number(void) 32246726Sattilio{ 33246726Sattilio struct number *n; 34246726Sattilio 35246726Sattilio n = bmalloc(sizeof(*n)); 36246726Sattilio n->scale = 0; 37246726Sattilio n->number = BN_new(); 38246726Sattilio if (n->number == NULL) 39246726Sattilio err(1, NULL); 40246726Sattilio return n; 41246726Sattilio} 42246726Sattilio 43226645Sattiliovoid 44226645Sattiliofree_number(struct number *n) 45226645Sattilio{ 46226645Sattilio BN_free(n->number); 47246726Sattilio free(n); 48246726Sattilio} 49226645Sattilio 50226645Sattiliostruct number * 51226645Sattiliodup_number(const struct number *a) 52226645Sattilio{ 53226645Sattilio struct number *n; 54226645Sattilio 55226645Sattilio n = bmalloc(sizeof(*n)); 56226645Sattilio n->scale = a->scale; 57246726Sattilio n->number = BN_dup(a->number); 58226873Sattilio bn_checkp(n->number); 59226645Sattilio return n; 60226876Sjeff} 61226873Sattilio 62226873Sattiliovoid * 63226873Sattiliobmalloc(size_t sz) 64226645Sattilio{ 65226645Sattilio void *p; 66246726Sattilio 67246726Sattilio p = malloc(sz); 68246726Sattilio if (p == NULL) 69226645Sattilio err(1, NULL); 70246794Sattilio return p; 71246794Sattilio} 72233034Sattilio 73246726Sattiliovoid * 74246726Sattiliobreallocarray(void *p, size_t nmemb, size_t size) 75246726Sattilio{ 76246726Sattilio int ret = reallocarr(&p, nmemb, size); 77233034Sattilio if (ret) 78246726Sattilio errc(1, ret, NULL); 79246726Sattilio return p; 80233034Sattilio} 81246726Sattilio 82233034Sattiliochar * 83233034Sattiliobstrdup(const char *p) 84232326Sattilio{ 85232326Sattilio char *q; 86246726Sattilio 87246726Sattilio q = strdup(p); 88232326Sattilio if (q == NULL) 89232326Sattilio err(1, NULL); 90246726Sattilio return q; 91246726Sattilio} 92246726Sattilio 93232326Sattiliovoid 94246726Sattiliobn_check(int x) \ 95246726Sattilio{ 96246726Sattilio if (x == 0) 97232326Sattilio err(1, "big number failure %lx", ERR_get_error()); 98232326Sattilio} 99232326Sattilio 100246726Sattiliovoid 101246726Sattiliobn_checkp(const void *p) \ 102246726Sattilio{ 103232326Sattilio if (p == NULL) 104232326Sattilio err(1, "allocation failure %lx", ERR_get_error()); 105226873Sattilio} 106226645Sattilio