Coverage Report

Created: 2025-06-22 06:29

/work/fu-uswid-struct.c
Line
Count
Source (jump to first uncovered line)
1
/* auto-generated, do not modify */
2
#include "config.h"
3
4
#include "fu-uswid-struct.h"
5
#include "fu-byte-array.h"
6
#include "fu-mem-private.h"
7
#include "fu-string.h"
8
9
#ifdef G_LOG_DOMAIN
10
  #undef G_LOG_DOMAIN
11
#endif
12
0
#define G_LOG_DOMAIN "FuStruct"
13
14
15
const gchar *
16
fu_uswid_payload_compression_to_string(FuUswidPayloadCompression val)
17
0
{
18
0
    if (val == FU_USWID_PAYLOAD_COMPRESSION_NONE)
19
0
        return "none";
20
0
    if (val == FU_USWID_PAYLOAD_COMPRESSION_ZLIB)
21
0
        return "zlib";
22
0
    if (val == FU_USWID_PAYLOAD_COMPRESSION_LZMA)
23
0
        return "lzma";
24
0
    return NULL;
25
0
}
26
FuUswidPayloadCompression
27
fu_uswid_payload_compression_from_string(const gchar *val)
28
0
{
29
0
    if (g_strcmp0(val, "none") == 0)
30
0
        return FU_USWID_PAYLOAD_COMPRESSION_NONE;
31
0
    if (g_strcmp0(val, "zlib") == 0)
32
0
        return FU_USWID_PAYLOAD_COMPRESSION_ZLIB;
33
0
    if (g_strcmp0(val, "lzma") == 0)
34
0
        return FU_USWID_PAYLOAD_COMPRESSION_LZMA;
35
0
    return FU_USWID_PAYLOAD_COMPRESSION_NONE;
36
0
}
37
/* getters */
38
/**
39
 * fu_struct_uswid_get_magic: (skip):
40
 **/
41
static const fwupd_guid_t *
42
fu_struct_uswid_get_magic(const FuStructUswid *st)
43
5.57M
{
44
5.57M
    g_return_val_if_fail(st != NULL, NULL);
45
5.57M
    return (const fwupd_guid_t *) (st->data + 0);
46
5.57M
}
47
/**
48
 * fu_struct_uswid_get_hdrver: (skip):
49
 **/
50
guint8
51
fu_struct_uswid_get_hdrver(const FuStructUswid *st)
52
5.75k
{
53
5.75k
    g_return_val_if_fail(st != NULL, 0x0);
54
5.75k
    return st->data[16];
55
5.75k
}
56
/**
57
 * fu_struct_uswid_get_hdrsz: (skip):
58
 **/
59
guint16
60
fu_struct_uswid_get_hdrsz(const FuStructUswid *st)
61
5.75k
{
62
5.75k
    g_return_val_if_fail(st != NULL, 0x0);
63
5.75k
    return fu_memread_uint16(st->data + 17, G_LITTLE_ENDIAN);
64
5.75k
}
65
/**
66
 * fu_struct_uswid_get_payloadsz: (skip):
67
 **/
68
guint32
69
fu_struct_uswid_get_payloadsz(const FuStructUswid *st)
70
5.75k
{
71
5.75k
    g_return_val_if_fail(st != NULL, 0x0);
72
5.75k
    return fu_memread_uint32(st->data + 19, G_LITTLE_ENDIAN);
73
5.75k
}
74
/**
75
 * fu_struct_uswid_get_flags: (skip):
76
 **/
77
guint8
78
fu_struct_uswid_get_flags(const FuStructUswid *st)
79
2.59k
{
80
2.59k
    g_return_val_if_fail(st != NULL, 0x0);
81
2.59k
    return st->data[23];
82
2.59k
}
83
/**
84
 * fu_struct_uswid_get_compression: (skip):
85
 **/
86
guint8
87
fu_struct_uswid_get_compression(const FuStructUswid *st)
88
425
{
89
425
    g_return_val_if_fail(st != NULL, 0x0);
90
425
    return st->data[24];
91
425
}
92
93
/* setters */
94
/**
95
 * fu_struct_uswid_set_magic: (skip):
96
 **/
97
static void
98
fu_struct_uswid_set_magic(FuStructUswid *st, const fwupd_guid_t *value)
99
1.26k
{
100
1.26k
    g_return_if_fail(st != NULL);
101
1.26k
    g_return_if_fail(value != NULL);
102
1.26k
    memcpy(st->data + 0, value, sizeof(*value)); /* nocheck:blocked */
103
1.26k
}
104
/**
105
 * fu_struct_uswid_set_hdrver: (skip):
106
 **/
107
void
108
fu_struct_uswid_set_hdrver(FuStructUswid *st, guint8 value)
109
1.25k
{
110
1.25k
    g_return_if_fail(st != NULL);
111
1.25k
    st->data[16] = value;
112
1.25k
}
113
/**
114
 * fu_struct_uswid_set_hdrsz: (skip):
115
 **/
116
void
117
fu_struct_uswid_set_hdrsz(FuStructUswid *st, guint16 value)
118
1.93k
{
119
1.93k
    g_return_if_fail(st != NULL);
120
1.93k
    fu_memwrite_uint16(st->data + 17, value, G_LITTLE_ENDIAN);
121
1.93k
}
122
/**
123
 * fu_struct_uswid_set_payloadsz: (skip):
124
 **/
125
void
126
fu_struct_uswid_set_payloadsz(FuStructUswid *st, guint32 value)
127
1.25k
{
128
1.25k
    g_return_if_fail(st != NULL);
129
1.25k
    fu_memwrite_uint32(st->data + 19, value, G_LITTLE_ENDIAN);
130
1.25k
}
131
/**
132
 * fu_struct_uswid_set_flags: (skip):
133
 **/
134
void
135
fu_struct_uswid_set_flags(FuStructUswid *st, guint8 value)
136
640
{
137
640
    g_return_if_fail(st != NULL);
138
640
    st->data[23] = value;
139
640
}
140
/**
141
 * fu_struct_uswid_set_compression: (skip):
142
 **/
143
void
144
fu_struct_uswid_set_compression(FuStructUswid *st, guint8 value)
145
579
{
146
579
    g_return_if_fail(st != NULL);
147
579
    st->data[24] = value;
148
579
}
149
/**
150
 * fu_struct_uswid_new: (skip):
151
 **/
152
FuStructUswid *
153
fu_struct_uswid_new(void)
154
1.26k
{
155
1.26k
    FuStructUswid *st = g_byte_array_sized_new(25);
156
1.26k
    fu_byte_array_set_size(st, 25, 0x0);
157
1.26k
    fu_struct_uswid_set_magic(st, (fwupd_guid_t *) "\x53\x42\x4f\x4d\xd6\xba\x2e\xac\xa3\xe6\x7a\x52\xaa\xee\x3b\xaf");
158
1.26k
    fu_struct_uswid_set_hdrsz(st, 25);
159
1.26k
    return st;
160
1.26k
}
161
/**
162
 * fu_struct_uswid_to_string: (skip):
163
 **/
164
static gchar *
165
fu_struct_uswid_to_string(const FuStructUswid *st)
166
0
{
167
0
    g_autoptr(GString) str = g_string_new("FuStructUswid:\n");
168
0
    g_return_val_if_fail(st != NULL, NULL);
169
0
    g_string_append_printf(str, "  hdrver: 0x%x\n",
170
0
                           (guint) fu_struct_uswid_get_hdrver(st));
171
0
    g_string_append_printf(str, "  hdrsz: 0x%x\n",
172
0
                           (guint) fu_struct_uswid_get_hdrsz(st));
173
0
    g_string_append_printf(str, "  payloadsz: 0x%x\n",
174
0
                           (guint) fu_struct_uswid_get_payloadsz(st));
175
0
    g_string_append_printf(str, "  flags: 0x%x\n",
176
0
                           (guint) fu_struct_uswid_get_flags(st));
177
0
    g_string_append_printf(str, "  compression: 0x%x\n",
178
0
                           (guint) fu_struct_uswid_get_compression(st));
179
0
    if (str->len > 0)
180
0
        g_string_set_size(str, str->len - 1);
181
0
    return g_string_free(g_steal_pointer(&str), FALSE);
182
0
}
183
static gboolean
184
fu_struct_uswid_validate_internal(FuStructUswid *st, GError **error)
185
5.57M
{
186
5.57M
    g_return_val_if_fail(st != NULL, FALSE);
187
5.57M
    if (memcmp(fu_struct_uswid_get_magic(st), "\x53\x42\x4f\x4d\xd6\xba\x2e\xac\xa3\xe6\x7a\x52\xaa\xee\x3b\xaf", 16) != 0) {
188
5.56M
        g_set_error_literal(error,
189
5.56M
                            FWUPD_ERROR,
190
5.56M
                            FWUPD_ERROR_INVALID_DATA,
191
5.56M
                            "constant FuStructUswid.magic was not valid");
192
5.56M
        return FALSE;
193
5.56M
    }
194
11.5k
    return TRUE;
195
5.57M
}
196
/**
197
 * fu_struct_uswid_validate_stream: (skip):
198
 **/
199
gboolean
200
fu_struct_uswid_validate_stream(GInputStream *stream, gsize offset, GError **error)
201
5.57M
{
202
5.57M
    g_autoptr(GByteArray) st = NULL;
203
5.57M
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
204
5.57M
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
205
5.57M
    st = fu_input_stream_read_byte_array(stream, offset, 25, NULL, error);
206
5.57M
    if (st == NULL) {
207
0
        g_prefix_error(error, "FuStructUswid failed read of 0x%x: ", (guint) 25);
208
0
        return FALSE;
209
0
    }
210
5.57M
    if (st->len != 25) {
211
4.56k
        g_set_error(error,
212
4.56k
                    FWUPD_ERROR,
213
4.56k
                    FWUPD_ERROR_INVALID_DATA,
214
4.56k
                    "FuStructUswid requested 0x%x and got 0x%x",
215
4.56k
                    (guint) 25,
216
4.56k
                    (guint) st->len);
217
4.56k
        return FALSE;
218
4.56k
    }
219
5.56M
    return fu_struct_uswid_validate_internal(st, error);
220
5.57M
}
221
static gboolean
222
fu_struct_uswid_parse_internal(FuStructUswid *st, GError **error)
223
5.75k
{
224
5.75k
    if (!fu_struct_uswid_validate_internal(st, error))
225
0
        return FALSE;
226
5.75k
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
227
0
        g_autofree gchar *str = fu_struct_uswid_to_string(st);
228
0
        g_debug("%s", str);
229
0
    }
230
5.75k
    return TRUE;
231
5.75k
}
232
/**
233
 * fu_struct_uswid_parse_stream: (skip):
234
 **/
235
FuStructUswid *
236
fu_struct_uswid_parse_stream(GInputStream *stream, gsize offset, GError **error)
237
5.75k
{
238
5.75k
    g_autoptr(GByteArray) st = NULL;
239
5.75k
    st = fu_input_stream_read_byte_array(stream, offset, 25, NULL, error);
240
5.75k
    if (st == NULL) {
241
0
        g_prefix_error(error, "FuStructUswid failed read of 0x%x: ", (guint) 25);
242
0
        return NULL;
243
0
    }
244
5.75k
    if (st->len != 25) {
245
0
        g_set_error(error,
246
0
                    FWUPD_ERROR,
247
0
                    FWUPD_ERROR_INVALID_DATA,
248
0
                    "FuStructUswid requested 0x%x and got 0x%x",
249
0
                    (guint) 25,
250
0
                    (guint) st->len);
251
0
        return NULL;
252
0
    }
253
5.75k
    if (!fu_struct_uswid_parse_internal(st, error))
254
0
        return NULL;
255
5.75k
    return g_steal_pointer(&st);
256
5.75k
}