Coverage Report

Created: 2022-04-27 14:33

/libfido2/src/types.c
Line
Count
Source
1
/*
2
 * Copyright (c) 2018-2021 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
123k
{
12
190k
        for (size_t i = 0; i < sa->len; i++)
13
66.9k
                free(sa->ptr[i]);
14
15
123k
        free(sa->ptr);
16
123k
        sa->ptr = NULL;
17
123k
        sa->len = 0;
18
123k
}
19
20
void
21
fido_opt_array_free(fido_opt_array_t *oa)
22
40.7k
{
23
81.5k
        for (size_t i = 0; i < oa->len; i++)
24
40.7k
                free(oa->name[i]);
25
26
40.7k
        free(oa->name);
27
40.7k
        free(oa->value);
28
40.7k
        oa->name = NULL;
29
40.7k
        oa->value = NULL;
30
40.7k
}
31
32
void
33
fido_byte_array_free(fido_byte_array_t *ba)
34
40.7k
{
35
40.7k
        free(ba->ptr);
36
37
40.7k
        ba->ptr = NULL;
38
40.7k
        ba->len = 0;
39
40.7k
}
40
41
void
42
fido_algo_free(fido_algo_t *a)
43
11.9k
{
44
11.9k
        free(a->type);
45
11.9k
        a->type = NULL;
46
11.9k
        a->cose = 0;
47
11.9k
}
48
49
void
50
fido_algo_array_free(fido_algo_array_t *aa)
51
40.7k
{
52
52.0k
        for (size_t i = 0; i < aa->len; i++)
53
11.2k
                fido_algo_free(&aa->ptr[i]);
54
55
40.7k
        free(aa->ptr);
56
40.7k
        aa->ptr = NULL;
57
40.7k
        aa->len = 0;
58
40.7k
}
59
60
int
61
fido_str_array_pack(fido_str_array_t *sa, const char * const *v, size_t n)
62
773
{
63
773
        if ((sa->ptr = calloc(n, sizeof(char *))) == NULL) {
64
2
                fido_log_debug("%s: calloc", __func__);
65
2
                return -1;
66
2
        }
67
23.1k
        for (size_t i = 0; i < n; i++) {
68
22.4k
                if ((sa->ptr[i] = strdup(v[i])) == NULL) {
69
48
                        fido_log_debug("%s: strdup", __func__);
70
48
                        return -1;
71
48
                }
72
22.3k
                sa->len++;
73
22.3k
        }
74
75
723
        return 0;
76
771
}