Coverage Report

Created: 2025-07-18 06:26

/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
10.6k
{
17
10.6k
    if (val == FU_IFD_REGION_DESC)
18
1.73k
        return "desc";
19
8.92k
    if (val == FU_IFD_REGION_BIOS)
20
1.73k
        return "bios";
21
7.18k
    if (val == FU_IFD_REGION_ME)
22
1.41k
        return "me";
23
5.77k
    if (val == FU_IFD_REGION_GBE)
24
1.28k
        return "gbe";
25
4.48k
    if (val == FU_IFD_REGION_PLATFORM)
26
1.26k
        return "platform";
27
3.22k
    if (val == FU_IFD_REGION_DEVEXP)
28
977
        return "devexp";
29
2.24k
    if (val == FU_IFD_REGION_BIOS2)
30
575
        return "bios2";
31
1.67k
    if (val == FU_IFD_REGION_EC)
32
557
        return "ec";
33
1.11k
    if (val == FU_IFD_REGION_IE)
34
0
        return "ie";
35
1.11k
    if (val == FU_IFD_REGION_10GBE)
36
0
        return "10gbe";
37
1.11k
    if (val == FU_IFD_REGION_MAX)
38
0
        return "max";
39
1.11k
    return NULL;
40
1.11k
}
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.9M
{
62
11.9M
    g_return_val_if_fail(st != NULL, 0x0);
63
11.9M
    return fu_memread_uint32(st->data + 16, G_LITTLE_ENDIAN);
64
11.9M
}
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.74k
{
71
1.74k
    g_return_val_if_fail(st != NULL, 0x0);
72
1.74k
    return fu_memread_uint32(st->data + 20, G_LITTLE_ENDIAN);
73
1.74k
}
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.74k
{
80
1.74k
    g_return_val_if_fail(st != NULL, 0x0);
81
1.74k
    return fu_memread_uint32(st->data + 24, G_LITTLE_ENDIAN);
82
1.74k
}
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.74k
{
89
1.74k
    g_return_val_if_fail(st != NULL, 0x0);
90
1.74k
    return fu_memread_uint32(st->data + 28, G_LITTLE_ENDIAN);
91
1.74k
}
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
704
{
100
704
    g_return_if_fail(st != NULL);
101
704
    fu_memwrite_uint32(st->data + 16, value, G_LITTLE_ENDIAN);
102
704
}
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
68
{
109
68
    g_return_if_fail(st != NULL);
110
68
    fu_memwrite_uint32(st->data + 20, value, G_LITTLE_ENDIAN);
111
68
}
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
68
{
118
68
    g_return_if_fail(st != NULL);
119
68
    fu_memwrite_uint32(st->data + 24, value, G_LITTLE_ENDIAN);
120
68
}
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
68
{
127
68
    g_return_if_fail(st != NULL);
128
68
    fu_memwrite_uint32(st->data + 28, value, G_LITTLE_ENDIAN);
129
68
}
130
/**
131
 * fu_struct_ifd_fdbar_new: (skip):
132
 **/
133
FuStructIfdFdbar *
134
fu_struct_ifd_fdbar_new(void)
135
704
{
136
704
    FuStructIfdFdbar *st = g_byte_array_sized_new(32);
137
704
    fu_byte_array_set_size(st, 32, 0x0);
138
704
    memcpy(st->data + 0x0, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 16); /* nocheck:blocked */
139
704
    fu_struct_ifd_fdbar_set_signature(st, 0x0FF0A55A);
140
704
    return st;
141
704
}
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
5.98M
{
163
5.98M
    g_return_val_if_fail(st != NULL, FALSE);
164
5.98M
    if (fu_struct_ifd_fdbar_get_signature(st) != 0x0FF0A55A) {
165
5.97M
        g_set_error(error,
166
5.97M
                    FWUPD_ERROR,
167
5.97M
                    FWUPD_ERROR_INVALID_DATA,
168
5.97M
                    "constant FuStructIfdFdbar.signature was not valid, "
169
5.97M
                    "expected 0x%x and got 0x%x",
170
5.97M
                    (guint) 0x0FF0A55A,
171
5.97M
                    (guint) fu_struct_ifd_fdbar_get_signature(st));
172
5.97M
        return FALSE;
173
5.97M
    }
174
3.55k
    return TRUE;
175
5.98M
}
176
/**
177
 * fu_struct_ifd_fdbar_validate_stream: (skip):
178
 **/
179
gboolean
180
fu_struct_ifd_fdbar_validate_stream(GInputStream *stream, gsize offset, GError **error)
181
5.98M
{
182
5.98M
    g_autoptr(GByteArray) st = NULL;
183
5.98M
    g_return_val_if_fail(G_IS_INPUT_STREAM(stream), FALSE);
184
5.98M
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
185
5.98M
    st = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
186
5.98M
    if (st == NULL) {
187
0
        g_prefix_error(error, "FuStructIfdFdbar failed read of 0x%x: ", (guint) 32);
188
0
        return FALSE;
189
0
    }
190
5.98M
    if (st->len != 32) {
191
3.91k
        g_set_error(error,
192
3.91k
                    FWUPD_ERROR,
193
3.91k
                    FWUPD_ERROR_INVALID_DATA,
194
3.91k
                    "FuStructIfdFdbar requested 0x%x and got 0x%x",
195
3.91k
                    (guint) 32,
196
3.91k
                    (guint) st->len);
197
3.91k
        return FALSE;
198
3.91k
    }
199
5.98M
    return fu_struct_ifd_fdbar_validate_internal(st, error);
200
5.98M
}
201
static gboolean
202
fu_struct_ifd_fdbar_parse_internal(FuStructIfdFdbar *st, GError **error)
203
1.74k
{
204
1.74k
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
205
0
        g_autofree gchar *str = fu_struct_ifd_fdbar_to_string(st);
206
0
        g_debug("%s", str);
207
0
    }
208
1.74k
    if (!fu_struct_ifd_fdbar_validate_internal(st, error))
209
0
        return FALSE;
210
1.74k
    return TRUE;
211
1.74k
}
212
/**
213
 * fu_struct_ifd_fdbar_parse_stream: (skip):
214
 **/
215
FuStructIfdFdbar *
216
fu_struct_ifd_fdbar_parse_stream(GInputStream *stream, gsize offset, GError **error)
217
1.74k
{
218
1.74k
    g_autoptr(GByteArray) st = NULL;
219
1.74k
    st = fu_input_stream_read_byte_array(stream, offset, 32, NULL, error);
220
1.74k
    if (st == NULL) {
221
0
        g_prefix_error(error, "FuStructIfdFdbar failed read of 0x%x: ", (guint) 32);
222
0
        return NULL;
223
0
    }
224
1.74k
    if (st->len != 32) {
225
0
        g_set_error(error,
226
0
                    FWUPD_ERROR,
227
0
                    FWUPD_ERROR_INVALID_DATA,
228
0
                    "FuStructIfdFdbar requested 0x%x and got 0x%x",
229
0
                    (guint) 32,
230
0
                    (guint) st->len);
231
0
        return NULL;
232
0
    }
233
1.74k
    if (!fu_struct_ifd_fdbar_parse_internal(st, error))
234
0
        return NULL;
235
1.74k
    return g_steal_pointer(&st);
236
1.74k
}
237
/* getters */
238
/**
239
 * fu_struct_ifd_fcba_get_flcomp: (skip):
240
 **/
241
guint32
242
fu_struct_ifd_fcba_get_flcomp(const FuStructIfdFcba *st)
243
1.74k
{
244
1.74k
    g_return_val_if_fail(st != NULL, 0x0);
245
1.74k
    return fu_memread_uint32(st->data + 0, G_LITTLE_ENDIAN);
246
1.74k
}
247
/**
248
 * fu_struct_ifd_fcba_get_flill: (skip):
249
 **/
250
guint32
251
fu_struct_ifd_fcba_get_flill(const FuStructIfdFcba *st)
252
1.74k
{
253
1.74k
    g_return_val_if_fail(st != NULL, 0x0);
254
1.74k
    return fu_memread_uint32(st->data + 4, G_LITTLE_ENDIAN);
255
1.74k
}
256
/**
257
 * fu_struct_ifd_fcba_get_flill1: (skip):
258
 **/
259
guint32
260
fu_struct_ifd_fcba_get_flill1(const FuStructIfdFcba *st)
261
1.74k
{
262
1.74k
    g_return_val_if_fail(st != NULL, 0x0);
263
1.74k
    return fu_memread_uint32(st->data + 8, G_LITTLE_ENDIAN);
264
1.74k
}
265
266
/* setters */
267
/**
268
 * fu_struct_ifd_fcba_set_flcomp: (skip):
269
 **/
270
void
271
fu_struct_ifd_fcba_set_flcomp(FuStructIfdFcba *st, guint32 value)
272
68
{
273
68
    g_return_if_fail(st != NULL);
274
68
    fu_memwrite_uint32(st->data + 0, value, G_LITTLE_ENDIAN);
275
68
}
276
/**
277
 * fu_struct_ifd_fcba_set_flill: (skip):
278
 **/
279
void
280
fu_struct_ifd_fcba_set_flill(FuStructIfdFcba *st, guint32 value)
281
68
{
282
68
    g_return_if_fail(st != NULL);
283
68
    fu_memwrite_uint32(st->data + 4, value, G_LITTLE_ENDIAN);
284
68
}
285
/**
286
 * fu_struct_ifd_fcba_set_flill1: (skip):
287
 **/
288
void
289
fu_struct_ifd_fcba_set_flill1(FuStructIfdFcba *st, guint32 value)
290
68
{
291
68
    g_return_if_fail(st != NULL);
292
68
    fu_memwrite_uint32(st->data + 8, value, G_LITTLE_ENDIAN);
293
68
}
294
/**
295
 * fu_struct_ifd_fcba_new: (skip):
296
 **/
297
FuStructIfdFcba *
298
fu_struct_ifd_fcba_new(void)
299
704
{
300
704
    FuStructIfdFcba *st = g_byte_array_sized_new(12);
301
704
    fu_byte_array_set_size(st, 12, 0x0);
302
704
    return st;
303
704
}
304
/**
305
 * fu_struct_ifd_fcba_to_string: (skip):
306
 **/
307
static gchar *
308
fu_struct_ifd_fcba_to_string(const FuStructIfdFcba *st)
309
0
{
310
0
    g_autoptr(GString) str = g_string_new("FuStructIfdFcba:\n");
311
0
    g_return_val_if_fail(st != NULL, NULL);
312
0
    g_string_append_printf(str, "  flcomp: 0x%x\n",
313
0
                           (guint) fu_struct_ifd_fcba_get_flcomp(st));
314
0
    g_string_append_printf(str, "  flill: 0x%x\n",
315
0
                           (guint) fu_struct_ifd_fcba_get_flill(st));
316
0
    g_string_append_printf(str, "  flill1: 0x%x\n",
317
0
                           (guint) fu_struct_ifd_fcba_get_flill1(st));
318
0
    if (str->len > 0)
319
0
        g_string_set_size(str, str->len - 1);
320
0
    return g_string_free(g_steal_pointer(&str), FALSE);
321
0
}
322
static gboolean
323
fu_struct_ifd_fcba_validate_internal(FuStructIfdFcba *st, GError **error)
324
1.74k
{
325
1.74k
    g_return_val_if_fail(st != NULL, FALSE);
326
1.74k
    return TRUE;
327
1.74k
}
328
static gboolean
329
fu_struct_ifd_fcba_parse_internal(FuStructIfdFcba *st, GError **error)
330
1.74k
{
331
1.74k
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
332
0
        g_autofree gchar *str = fu_struct_ifd_fcba_to_string(st);
333
0
        g_debug("%s", str);
334
0
    }
335
1.74k
    if (!fu_struct_ifd_fcba_validate_internal(st, error))
336
0
        return FALSE;
337
1.74k
    return TRUE;
338
1.74k
}
339
/**
340
 * fu_struct_ifd_fcba_parse_stream: (skip):
341
 **/
342
FuStructIfdFcba *
343
fu_struct_ifd_fcba_parse_stream(GInputStream *stream, gsize offset, GError **error)
344
1.74k
{
345
1.74k
    g_autoptr(GByteArray) st = NULL;
346
1.74k
    st = fu_input_stream_read_byte_array(stream, offset, 12, NULL, error);
347
1.74k
    if (st == NULL) {
348
0
        g_prefix_error(error, "FuStructIfdFcba failed read of 0x%x: ", (guint) 12);
349
0
        return NULL;
350
0
    }
351
1.74k
    if (st->len != 12) {
352
0
        g_set_error(error,
353
0
                    FWUPD_ERROR,
354
0
                    FWUPD_ERROR_INVALID_DATA,
355
0
                    "FuStructIfdFcba requested 0x%x and got 0x%x",
356
0
                    (guint) 12,
357
0
                    (guint) st->len);
358
0
        return NULL;
359
0
    }
360
1.74k
    if (!fu_struct_ifd_fcba_parse_internal(st, error))
361
0
        return NULL;
362
1.74k
    return g_steal_pointer(&st);
363
1.74k
}