Coverage Report

Created: 2022-01-17 10:46

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