Coverage Report

Created: 2021-10-21 13:35

/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
129k
{
12
198k
        for (size_t i = 0; i < sa->len; i++)
13
69.3k
                free(sa->ptr[i]);
14
15
129k
        free(sa->ptr);
16
129k
        sa->ptr = NULL;
17
129k
        sa->len = 0;
18
129k
}
19
20
void
21
fido_opt_array_free(fido_opt_array_t *oa)
22
42.9k
{
23
86.8k
        for (size_t i = 0; i < oa->len; i++)
24
43.9k
                free(oa->name[i]);
25
26
42.9k
        free(oa->name);
27
42.9k
        free(oa->value);
28
42.9k
        oa->name = NULL;
29
42.9k
        oa->value = NULL;
30
42.9k
}
31
32
void
33
fido_byte_array_free(fido_byte_array_t *ba)
34
42.9k
{
35
42.9k
        free(ba->ptr);
36
37
42.9k
        ba->ptr = NULL;
38
42.9k
        ba->len = 0;
39
42.9k
}
40
41
void
42
fido_algo_free(fido_algo_t *a)
43
12.5k
{
44
12.5k
        free(a->type);
45
12.5k
        a->type = NULL;
46
12.5k
        a->cose = 0;
47
12.5k
}
48
49
void
50
fido_algo_array_free(fido_algo_array_t *aa)
51
42.9k
{
52
54.8k
        for (size_t i = 0; i < aa->len; i++)
53
11.9k
                fido_algo_free(&aa->ptr[i]);
54
55
42.9k
        free(aa->ptr);
56
42.9k
        aa->ptr = NULL;
57
42.9k
        aa->len = 0;
58
42.9k
}
59
60
int
61
fido_str_array_pack(fido_str_array_t *sa, const char * const *v, size_t n)
62
842
{
63
842
        if ((sa->ptr = calloc(n, sizeof(char *))) == NULL) {
64
1
                fido_log_debug("%s: calloc", __func__);
65
1
                return -1;
66
1
        }
67
24.4k
        for (size_t i = 0; i < n; i++) {
68
23.6k
                if ((sa->ptr[i] = strdup(v[i])) == NULL) {
69
48
                        fido_log_debug("%s: strdup", __func__);
70
48
                        return -1;
71
48
                }
72
23.6k
                sa->len++;
73
23.6k
        }
74
75
841
        return 0;
76
841
}