Home | History | Annotate | Line # | Download | only in src
      1 /*
      2  * Copyright (c) 2018-2022 Yubico AB. All rights reserved.
      3  * Use of this source code is governed by a BSD-style
      4  * license that can be found in the LICENSE file.
      5  * SPDX-License-Identifier: BSD-2-Clause
      6  */
      7 
      8 #include "fido.h"
      9 
     10 void
     11 fido_str_array_free(fido_str_array_t *sa)
     12 {
     13 	for (size_t i = 0; i < sa->len; i++)
     14 		free(sa->ptr[i]);
     15 
     16 	free(sa->ptr);
     17 	sa->ptr = NULL;
     18 	sa->len = 0;
     19 }
     20 
     21 void
     22 fido_opt_array_free(fido_opt_array_t *oa)
     23 {
     24 	for (size_t i = 0; i < oa->len; i++)
     25 		free(oa->name[i]);
     26 
     27 	free(oa->name);
     28 	free(oa->value);
     29 	oa->name = NULL;
     30 	oa->value = NULL;
     31 	oa->len = 0;
     32 }
     33 
     34 void
     35 fido_byte_array_free(fido_byte_array_t *ba)
     36 {
     37 	free(ba->ptr);
     38 
     39 	ba->ptr = NULL;
     40 	ba->len = 0;
     41 }
     42 
     43 void
     44 fido_algo_free(fido_algo_t *a)
     45 {
     46 	free(a->type);
     47 	a->type = NULL;
     48 	a->cose = 0;
     49 }
     50 
     51 void
     52 fido_algo_array_free(fido_algo_array_t *aa)
     53 {
     54 	for (size_t i = 0; i < aa->len; i++)
     55 		fido_algo_free(&aa->ptr[i]);
     56 
     57 	free(aa->ptr);
     58 	aa->ptr = NULL;
     59 	aa->len = 0;
     60 }
     61 
     62 void
     63 fido_cert_array_free(fido_cert_array_t *ca)
     64 {
     65 	for (size_t i = 0; i < ca->len; i++)
     66 		free(ca->name[i]);
     67 
     68 	free(ca->name);
     69 	free(ca->value);
     70 	ca->name = NULL;
     71 	ca->value = NULL;
     72 	ca->len = 0;
     73 }
     74 
     75 int
     76 fido_str_array_pack(fido_str_array_t *sa, const char * const *v, size_t n)
     77 {
     78 	if ((sa->ptr = calloc(n, sizeof(char *))) == NULL) {
     79 		fido_log_debug("%s: calloc", __func__);
     80 		return -1;
     81 	}
     82 	for (size_t i = 0; i < n; i++) {
     83 		if ((sa->ptr[i] = strdup(v[i])) == NULL) {
     84 			fido_log_debug("%s: strdup", __func__);
     85 			return -1;
     86 		}
     87 		sa->len++;
     88 	}
     89 
     90 	return 0;
     91 }
     92