Coverage Report

Created: 2022-07-22 12:05

/libfido2/src/types.c
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
 */
6
7
#include "fido.h"
8
9
void
10
fido_str_array_free(fido_str_array_t *sa)
11
124k
{
12
164k
        for (size_t i = 0; i < sa->len; i++)
13
40.4k
                free(sa->ptr[i]);
14
15
124k
        free(sa->ptr);
16
124k
        sa->ptr = NULL;
17
124k
        sa->len = 0;
18
124k
}
19
20
void
21
fido_opt_array_free(fido_opt_array_t *oa)
22
41.2k
{
23
60.5k
        for (size_t i = 0; i < oa->len; i++)
24
19.3k
                free(oa->name[i]);
25
26
41.2k
        free(oa->name);
27
41.2k
        free(oa->value);
28
41.2k
        oa->name = NULL;
29
41.2k
        oa->value = NULL;
30
41.2k
        oa->len = 0;
31
41.2k
}
32
33
void
34
fido_byte_array_free(fido_byte_array_t *ba)
35
41.2k
{
36
41.2k
        free(ba->ptr);
37
38
41.2k
        ba->ptr = NULL;
39
41.2k
        ba->len = 0;
40
41.2k
}
41
42
void
43
fido_algo_free(fido_algo_t *a)
44
6.24k
{
45
6.24k
        free(a->type);
46
6.24k
        a->type = NULL;
47
6.24k
        a->cose = 0;
48
6.24k
}
49
50
void
51
fido_algo_array_free(fido_algo_array_t *aa)
52
41.2k
{
53
47.2k
        for (size_t i = 0; i < aa->len; i++)
54
6.02k
                fido_algo_free(&aa->ptr[i]);
55
56
41.2k
        free(aa->ptr);
57
41.2k
        aa->ptr = NULL;
58
41.2k
        aa->len = 0;
59
41.2k
}
60
61
void
62
fido_cert_array_free(fido_cert_array_t *ca)
63
41.2k
{
64
42.3k
        for (size_t i = 0; i < ca->len; i++)
65
1.07k
                free(ca->name[i]);
66
67
41.2k
        free(ca->name);
68
41.2k
        free(ca->value);
69
41.2k
        ca->name = NULL;
70
41.2k
        ca->value = NULL;
71
41.2k
        ca->len = 0;
72
41.2k
}
73
74
int
75
fido_str_array_pack(fido_str_array_t *sa, const char * const *v, size_t n)
76
686
{
77
686
        if ((sa->ptr = calloc(n, sizeof(char *))) == NULL) {
78
2
                fido_log_debug("%s: calloc", __func__);
79
2
                return -1;
80
2
        }
81
19.8k
        for (size_t i = 0; i < n; i++) {
82
19.2k
                if ((sa->ptr[i] = strdup(v[i])) == NULL) {
83
54
                        fido_log_debug("%s: strdup", __func__);
84
54
                        return -1;
85
54
                }
86
19.2k
                sa->len++;
87
19.2k
        }
88
89
630
        return 0;
90
684
}