Coverage Report

Created: 2025-07-01 07:09

/work/fu-ifd-struct.c
Line
Count
Source (jump to first uncovered line)
1
/* auto-generated, do not modify */
2
#include "config.h"
3
4
#include "fu-ifd-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
const gchar *
15
fu_ifd_region_to_string(FuIfdRegion val)
16
11.1k
{
17
11.1k
    if (val == FU_IFD_REGION_DESC)
18
1.86k
        return "desc";
19
9.28k
    if (val == FU_IFD_REGION_BIOS)
20
1.85k
        return "bios";
21
7.42k
    if (val == FU_IFD_REGION_ME)
22
1.47k
        return "me";
23
5.95k
    if (val == FU_IFD_REGION_GBE)
24
1.33k
        return "gbe";
25
4.61k
    if (val == FU_IFD_REGION_PLATFORM)
26
1.30k
        return "platform";
27
3.31k
    if (val == FU_IFD_REGION_DEVEXP)
28
1.01k
        return "devexp";
29
2.29k
    if (val == FU_IFD_REGION_BIOS2)
30
593
        return "bios2";
31
1.70k
    if (val == FU_IFD_REGION_EC)
32
568
        return "ec";
33
1.13k
    if (val == FU_IFD_REGION_IE)
34
0
        return "ie";
35
1.13k
    if (val == FU_IFD_REGION_10GBE)
36
0
        return "10gbe";
37
1.13k
    if (val == FU_IFD_REGION_MAX)
38
0
        return "max";
39
1.13k
    return NULL;
40
1.13k
}
41
42
gchar *
43
fu_ifd_access_to_string(FuIfdAccess val)
44
0
{
45
0
    const gchar *data[3] = {0};
46
0
    guint idx = 0;
47
0
    if (val == FU_IFD_ACCESS_NONE)
48
0
        return g_strdup("none");
49
0
    if (val & FU_IFD_ACCESS_READ)
50
0
        data[idx++] = "read";
51
0
    if (val & FU_IFD_ACCESS_WRITE)
52
0
        data[idx++] = "write";
53
0
    return g_strjoinv(",", (gchar **)data);
54
0
}
55
/* getters */
56
/**
57
 * fu_struct_ifd_fdbar_get_signature: (skip):
58
 **/
59
static guint32
60
fu_struct_ifd_fdbar_get_signature(const FuStructIfdFdbar *st)
61
11.5M
{
62
11.5M
    g_return_val_if_fail(st != NULL, 0x0);
63
11.5M
    return fu_memread_uint32(st->data + 16, G_LITTLE_ENDIAN);
64
11.5M
}
65
/**
66
 * fu_struct_ifd_fdbar_get_descriptor_map0: (skip):
67
 **/
68
guint32
69
fu_struct_ifd_fdbar_get_descriptor_map0(const FuStructIfdFdbar *st)
70
1.86k
{
71
1.86k
    g_return_val_if_fail(st != NULL, 0x0);
72
1.86k
    return fu_memread_uint32(st->data + 20, G_LITTLE_ENDIAN);
73
1.86k
}
74
/**
75
 * fu_struct_ifd_fdbar_get_descriptor_map1: (skip):
76
 **/
77
guint32
78
fu_struct_ifd_fdbar_get_descriptor_map1(const FuStructIfdFdbar *st)
79
1.86k
{
80
1.86k
    g_return_val_if_fail(st != NULL, 0x0);
81
1.86k
    return fu_memread_uint32(st->data + 24, G_LITTLE_ENDIAN);
82
1.86k
}
83
/**
84
 * fu_struct_ifd_fdbar_get_descriptor_map2: (skip):
85
 **/
86
guint32
87
fu_struct_ifd_fdbar_get_descriptor_map2(const FuStructIfdFdbar *st)
88
1.86k
{
89
1.86k
    g_return_val_if_fail(st != NULL, 0x0);
90
1.86k
    return fu_memread_uint32(st->data + 28, G_LITTLE_ENDIAN);
91
1.86k
}
92
93
/* setters */
94
/**
95
 * fu_struct_ifd_fdbar_set_signature: (skip):
96
 **/
97
static void
98
fu_struct_ifd_fdbar_set_signature(FuStructIfdFdbar *st, guint32 value)
99
727
{
100
727
    g_return_if_fail(st != NULL);
101
727
    fu_memwrite_uint32(st->data + 16, value, G_LITTLE_ENDIAN);
102
727
}
103
/**
104
 * fu_struct_ifd_fdbar_set_descriptor_map0: (skip):
105
 **/
106
void
107
fu_struct_ifd_fdbar_set_descriptor_map0(FuStructIfdFdbar *st, guint32 value)
108
78
{
109
78
    g_return_if_fail(st != NULL);
110
78
    fu_memwrite_uint32(st->data + 20, value, G_LITTLE_ENDIAN);
111
78
}
112
/**
113
 * fu_struct_ifd_fdbar_set_descriptor_map1: (skip):
114
 **/
115
void
116
fu_struct_ifd_fdbar_set_descriptor_map1(FuStructIfdFdbar *st, guint32 value)
117
78
{
118
78
    g_return_if_fail(st != NULL);
119
78
    fu_memwrite_uint32(st->data + 24, value, G_LITTLE_ENDIAN);
120
78
}
121
/**
122
 * fu_struct_ifd_fdbar_set_descriptor_map2: (skip):
123
 **/
124
void
125
fu_struct_ifd_fdbar_set_descriptor_map2(FuStructIfdFdbar *st, guint32 value)
126
78
{
127
78
    g_return_if_fail(st != NULL);
128
78
    fu_memwrite_uint32(st->data + 28, value, G_LITTLE_ENDIAN);
129
78
}
130
/**
131
 * fu_struct_ifd_fdbar_new: (skip):
132
 **/
133
FuStructIfdFdbar *
134
fu_struct_ifd_fdbar_new(void)
135
727
{
136
727
    FuStructIfdFdbar *st = g_byte_array_sized_new(32);
137
727
    fu_byte_array_set_size(st, 32, 0x0);
138
727
    memcpy(st->data + 0x0, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 16); /* nocheck:blocked */
139
727
    fu_struct_ifd_fdbar_set_signature(st, 0x0FF0A55A);
140
727
    return st;
141
727
}
142
/**
143
 * fu_struct_ifd_fdbar_to_string: (skip):
144
 **/
145
static gchar *
146
fu_struct_ifd_fdbar_to_string(const FuStructIfdFdbar *st)
147
0
{
148
0
    g_autoptr(GString) str = g_string_new("FuStructIfdFdbar:\n");
149
0
    g_return_val_if_fail(st != NULL, NULL);
150
0
    g_string_append_printf(str, "  descriptor_map0: 0x%x\n",
151
0
                           (guint) fu_struct_ifd_fdbar_get_descriptor_map0(st));
152
0
    g_string_append_printf(str, "  descriptor_map1: 0x%x\n",
153
0
                           (guint) fu_struct_ifd_fdbar_get_descriptor_map1(st));
154
0
    g_string_append_printf(str, "  descriptor_map2: 0x%x\n",
155
0
                           (guint) fu_struct_ifd_fdbar_get_descriptor_map2(st));
156
0
    if (str->len > 0)
157
0
        g_string_set_size(str, str->len - 1);
158
0
    return g_string_free(g_steal_pointer(&str), FALSE);
159
0
}
160
static gboolean
161
fu_struct_ifd_fdbar_validate_internal(FuStructIfdFdbar *st, GError **error)
162
11.5M
{
163
11.5M
    g_return_val_if_fail(st != NULL, FALSE);
164
11.5M
    if (fu_struct_ifd_fdbar_get_signature(st) != 0x0FF0A55A) {
165
11.5M
        g_set_error_literal(error,
166
11.5M
                            FWUPD_ERROR,
167
11.5M
                            FWUPD_ERROR_INVALID_DATA,
168
11.5M
                            "constant FuStructIfdFdbar.signature was not valid");
169
11.5M
        return FALSE;
170
11.5M
    }
171
3.80k
    return TRUE;
172
11.5M
}
173
/**
174
 * fu_struct_ifd_fdbar_validate_stream: (skip):
175
 **/
176
gboolean
177
fu_struct_ifd_fdbar_validate_stream(GInputStream *stream, gsize offset, GError **error)
178
11.5M
{
179
11.5M
    g_autoptr(GByteArray) st = NULL;
180
11.5M
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
181
11.5M
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
182
11.5M
    st = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
183
11.5M
    if (st == NULL) {
184
0
        g_prefix_error(error, "FuStructIfdFdbar failed read of 0x%x: ", (guint) 32);
185
0
        return FALSE;
186
0
    }
187
11.5M
    if (st->len != 32) {
188
4.62k
        g_set_error(error,
189
4.62k
                    FWUPD_ERROR,
190
4.62k
                    FWUPD_ERROR_INVALID_DATA,
191
4.62k
                    "FuStructIfdFdbar requested 0x%x and got 0x%x",
192
4.62k
                    (guint) 32,
193
4.62k
                    (guint) st->len);
194
4.62k
        return FALSE;
195
4.62k
    }
196
11.5M
    return fu_struct_ifd_fdbar_validate_internal(st, error);
197
11.5M
}
198
static gboolean
199
fu_struct_ifd_fdbar_parse_internal(FuStructIfdFdbar *st, GError **error)
200
1.86k
{
201
1.86k
    if (!fu_struct_ifd_fdbar_validate_internal(st, error))
202
0
        return FALSE;
203
1.86k
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
204
0
        g_autofree gchar *str = fu_struct_ifd_fdbar_to_string(st);
205
0
        g_debug("%s", str);
206
0
    }
207
1.86k
    return TRUE;
208
1.86k
}
209
/**
210
 * fu_struct_ifd_fdbar_parse_stream: (skip):
211
 **/
212
FuStructIfdFdbar *
213
fu_struct_ifd_fdbar_parse_stream(GInputStream *stream, gsize offset, GError **error)
214
1.86k
{
215
1.86k
    g_autoptr(GByteArray) st = NULL;
216
1.86k
    st = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
217
1.86k
    if (st == NULL) {
218
0
        g_prefix_error(error, "FuStructIfdFdbar failed read of 0x%x: ", (guint) 32);
219
0
        return NULL;
220
0
    }
221
1.86k
    if (st->len != 32) {
222
0
        g_set_error(error,
223
0
                    FWUPD_ERROR,
224
0
                    FWUPD_ERROR_INVALID_DATA,
225
0
                    "FuStructIfdFdbar requested 0x%x and got 0x%x",
226
0
                    (guint) 32,
227
0
                    (guint) st->len);
228
0
        return NULL;
229
0
    }
230
1.86k
    if (!fu_struct_ifd_fdbar_parse_internal(st, error))
231
0
        return NULL;
232
1.86k
    return g_steal_pointer(&st);
233
1.86k
}
234
/* getters */
235
/**
236
 * fu_struct_ifd_fcba_get_flcomp: (skip):
237
 **/
238
guint32
239
fu_struct_ifd_fcba_get_flcomp(const FuStructIfdFcba *st)
240
1.86k
{
241
1.86k
    g_return_val_if_fail(st != NULL, 0x0);
242
1.86k
    return fu_memread_uint32(st->data + 0, G_LITTLE_ENDIAN);
243
1.86k
}
244
/**
245
 * fu_struct_ifd_fcba_get_flill: (skip):
246
 **/
247
guint32
248
fu_struct_ifd_fcba_get_flill(const FuStructIfdFcba *st)
249
1.86k
{
250
1.86k
    g_return_val_if_fail(st != NULL, 0x0);
251
1.86k
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
252
1.86k
}
253
/**
254
 * fu_struct_ifd_fcba_get_flill1: (skip):
255
 **/
256
guint32
257
fu_struct_ifd_fcba_get_flill1(const FuStructIfdFcba *st)
258
1.86k
{
259
1.86k
    g_return_val_if_fail(st != NULL, 0x0);
260
1.86k
    return fu_memread_uint32(st->data + 8, G_LITTLE_ENDIAN);
261
1.86k
}
262
263
/* setters */
264
/**
265
 * fu_struct_ifd_fcba_set_flcomp: (skip):
266
 **/
267
void
268
fu_struct_ifd_fcba_set_flcomp(FuStructIfdFcba *st, guint32 value)
269
78
{
270
78
    g_return_if_fail(st != NULL);
271
78
    fu_memwrite_uint32(st->data + 0, value, G_LITTLE_ENDIAN);
272
78
}
273
/**
274
 * fu_struct_ifd_fcba_set_flill: (skip):
275
 **/
276
void
277
fu_struct_ifd_fcba_set_flill(FuStructIfdFcba *st, guint32 value)
278
78
{
279
78
    g_return_if_fail(st != NULL);
280
78
    fu_memwrite_uint32(st->data + 4, value, G_LITTLE_ENDIAN);
281
78
}
282
/**
283
 * fu_struct_ifd_fcba_set_flill1: (skip):
284
 **/
285
void
286
fu_struct_ifd_fcba_set_flill1(FuStructIfdFcba *st, guint32 value)
287
78
{
288
78
    g_return_if_fail(st != NULL);
289
78
    fu_memwrite_uint32(st->data + 8, value, G_LITTLE_ENDIAN);
290
78
}
291
/**
292
 * fu_struct_ifd_fcba_new: (skip):
293
 **/
294
FuStructIfdFcba *
295
fu_struct_ifd_fcba_new(void)
296
727
{
297
727
    FuStructIfdFcba *st = g_byte_array_sized_new(12);
298
727
    fu_byte_array_set_size(st, 12, 0x0);
299
727
    return st;
300
727
}
301
/**
302
 * fu_struct_ifd_fcba_to_string: (skip):
303
 **/
304
static gchar *
305
fu_struct_ifd_fcba_to_string(const FuStructIfdFcba *st)
306
0
{
307
0
    g_autoptr(GString) str = g_string_new("FuStructIfdFcba:\n");
308
0
    g_return_val_if_fail(st != NULL, NULL);
309
0
    g_string_append_printf(str, "  flcomp: 0x%x\n",
310
0
                           (guint) fu_struct_ifd_fcba_get_flcomp(st));
311
0
    g_string_append_printf(str, "  flill: 0x%x\n",
312
0
                           (guint) fu_struct_ifd_fcba_get_flill(st));
313
0
    g_string_append_printf(str, "  flill1: 0x%x\n",
314
0
                           (guint) fu_struct_ifd_fcba_get_flill1(st));
315
0
    if (str->len > 0)
316
0
        g_string_set_size(str, str->len - 1);
317
0
    return g_string_free(g_steal_pointer(&str), FALSE);
318
0
}
319
static gboolean
320
fu_struct_ifd_fcba_validate_internal(FuStructIfdFcba *st, GError **error)
321
1.86k
{
322
1.86k
    g_return_val_if_fail(st != NULL, FALSE);
323
1.86k
    return TRUE;
324
1.86k
}
325
static gboolean
326
fu_struct_ifd_fcba_parse_internal(FuStructIfdFcba *st, GError **error)
327
1.86k
{
328
1.86k
    if (!fu_struct_ifd_fcba_validate_internal(st, error))
329
0
        return FALSE;
330
1.86k
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
331
0
        g_autofree gchar *str = fu_struct_ifd_fcba_to_string(st);
332
0
        g_debug("%s", str);
333
0
    }
334
1.86k
    return TRUE;
335
1.86k
}
336
/**
337
 * fu_struct_ifd_fcba_parse_stream: (skip):
338
 **/
339
FuStructIfdFcba *
340
fu_struct_ifd_fcba_parse_stream(GInputStream *stream, gsize offset, GError **error)
341
1.86k
{
342
1.86k
    g_autoptr(GByteArray) st = NULL;
343
1.86k
    st = fu_input_stream_read_byte_array(stream, offset, 12, NULL, error);
344
1.86k
    if (st == NULL) {
345
0
        g_prefix_error(error, "FuStructIfdFcba failed read of 0x%x: ", (guint) 12);
346
0
        return NULL;
347
0
    }
348
1.86k
    if (st->len != 12) {
349
0
        g_set_error(error,
350
0
                    FWUPD_ERROR,
351
0
                    FWUPD_ERROR_INVALID_DATA,
352
0
                    "FuStructIfdFcba requested 0x%x and got 0x%x",
353
0
                    (guint) 12,
354
0
                    (guint) st->len);
355
0
        return NULL;
356
0
    }
357
1.86k
    if (!fu_struct_ifd_fcba_parse_internal(st, error))
358
0
        return NULL;
359
1.86k
    return g_steal_pointer(&st);
360
1.86k
}