| Line | Count | Source | 
| 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 | 332k | { | 
| 13 | 446k |         for (size_t i = 0; i < sa->len; i++) | 
| 14 | 114k |                 free(sa->ptr[i]); | 
| 15 |  |  | 
| 16 | 332k |         free(sa->ptr); | 
| 17 | 332k |         sa->ptr = NULL; | 
| 18 | 332k |         sa->len = 0; | 
| 19 | 332k | } | 
| 20 |  |  | 
| 21 |  | void | 
| 22 |  | fido_opt_array_free(fido_opt_array_t *oa) | 
| 23 | 110k | { | 
| 24 | 167k |         for (size_t i = 0; i < oa->len; i++) | 
| 25 | 57.4k |                 free(oa->name[i]); | 
| 26 |  |  | 
| 27 | 110k |         free(oa->name); | 
| 28 | 110k |         free(oa->value); | 
| 29 | 110k |         oa->name = NULL; | 
| 30 | 110k |         oa->value = NULL; | 
| 31 | 110k |         oa->len = 0; | 
| 32 | 110k | } | 
| 33 |  |  | 
| 34 |  | void | 
| 35 |  | fido_byte_array_free(fido_byte_array_t *ba) | 
| 36 | 110k | { | 
| 37 | 110k |         free(ba->ptr); | 
| 38 |  |  | 
| 39 | 110k |         ba->ptr = NULL; | 
| 40 | 110k |         ba->len = 0; | 
| 41 | 110k | } | 
| 42 |  |  | 
| 43 |  | void | 
| 44 |  | fido_algo_free(fido_algo_t *a) | 
| 45 | 17.9k | { | 
| 46 | 17.9k |         free(a->type); | 
| 47 | 17.9k |         a->type = NULL; | 
| 48 | 17.9k |         a->cose = 0; | 
| 49 | 17.9k | } | 
| 50 |  |  | 
| 51 |  | void | 
| 52 |  | fido_algo_array_free(fido_algo_array_t *aa) | 
| 53 | 110k | { | 
| 54 | 127k |         for (size_t i = 0; i < aa->len; i++) | 
| 55 | 17.2k |                 fido_algo_free(&aa->ptr[i]); | 
| 56 |  |  | 
| 57 | 110k |         free(aa->ptr); | 
| 58 | 110k |         aa->ptr = NULL; | 
| 59 | 110k |         aa->len = 0; | 
| 60 | 110k | } | 
| 61 |  |  | 
| 62 |  | void | 
| 63 |  | fido_cert_array_free(fido_cert_array_t *ca) | 
| 64 | 110k | { | 
| 65 | 111k |         for (size_t i = 0; i < ca->len; i++) | 
| 66 | 1.06k |                 free(ca->name[i]); | 
| 67 |  |  | 
| 68 | 110k |         free(ca->name); | 
| 69 | 110k |         free(ca->value); | 
| 70 | 110k |         ca->name = NULL; | 
| 71 | 110k |         ca->value = NULL; | 
| 72 | 110k |         ca->len = 0; | 
| 73 | 110k | } | 
| 74 |  |  | 
| 75 |  | int | 
| 76 |  | fido_str_array_pack(fido_str_array_t *sa, const char * const *v, size_t n) | 
| 77 | 1.83k | { | 
| 78 | 1.83k |         if ((sa->ptr = calloc(n, sizeof(char *))) == NULL) { | 
| 79 | 6 |                 fido_log_debug("%s: calloc", __func__); | 
| 80 | 6 |                 return -1; | 
| 81 | 6 |         } | 
| 82 | 53.7k |         for (size_t i = 0; i < n; i++) { | 
| 83 | 52.0k |                 if ((sa->ptr[i] = strdup(v[i])) == NULL) { | 
| 84 | 98 |                         fido_log_debug("%s: strdup", __func__); | 
| 85 | 98 |                         return -1; | 
| 86 | 98 |                 } | 
| 87 | 51.9k |                 sa->len++; | 
| 88 | 51.9k |         } | 
| 89 |  |  | 
| 90 | 1.73k |         return 0; | 
| 91 | 1.83k | } |