Home | History | Annotate | Line # | Download | only in dc
      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 (at) 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 
     30 struct number *
     31 new_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 
     43 void
     44 free_number(struct number *n)
     45 {
     46 	BN_free(n->number);
     47 	free(n);
     48 }
     49 
     50 struct number *
     51 dup_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 
     62 void *
     63 bmalloc(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 
     73 void *
     74 breallocarray(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 
     82 char *
     83 bstrdup(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 
     93 void
     94 bn_check(int x)						\
     95 {
     96 	if (x == 0)
     97 		err(1, "big number failure %lx", ERR_get_error());
     98 }
     99 
    100 void
    101 bn_checkp(const void *p)						\
    102 {
    103 	if (p == NULL)
    104 		err(1, "allocation failure %lx", ERR_get_error());
    105 }
    106