Coverage Report

Created: 2025-11-24 06:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/fu-heci-struct.c
Line
Count
Source
1
/* auto-generated, do not modify */
2
#include "config.h"
3
4
#include <glib.h>
5
6
#include "fu-heci-struct.h"
7
#include "fu-byte-array.h"
8
#include "fu-mem-private.h"
9
#include "fu-string.h"
10
11
#ifdef G_LOG_DOMAIN
12
  #undef G_LOG_DOMAIN
13
#endif
14
0
#define G_LOG_DOMAIN "FuStruct"
15
16
static const gchar *
17
fu_mkhi_group_id_to_string(FuMkhiGroupId val)
18
0
{
19
0
    if (val == FU_MKHI_GROUP_ID_CBM)
20
0
        return "cbm";
21
0
    if (val == FU_MKHI_GROUP_ID_PM)
22
0
        return "pm";
23
0
    if (val == FU_MKHI_GROUP_ID_PWD)
24
0
        return "pwd";
25
0
    if (val == FU_MKHI_GROUP_ID_FWCAPS)
26
0
        return "fwcaps";
27
0
    if (val == FU_MKHI_GROUP_ID_APP)
28
0
        return "app";
29
0
    if (val == FU_MKHI_GROUP_ID_FWUPDATE)
30
0
        return "fwupdate";
31
0
    if (val == FU_MKHI_GROUP_ID_FIRMWARE_UPDATE)
32
0
        return "firmware-update";
33
0
    if (val == FU_MKHI_GROUP_ID_BIST)
34
0
        return "bist";
35
0
    if (val == FU_MKHI_GROUP_ID_MDES)
36
0
        return "mdes";
37
0
    if (val == FU_MKHI_GROUP_ID_ME_DBG)
38
0
        return "me-dbg";
39
0
    if (val == FU_MKHI_GROUP_ID_MCA)
40
0
        return "mca";
41
0
    if (val == FU_MKHI_GROUP_ID_GEN)
42
0
        return "gen";
43
0
    return NULL;
44
0
}
45
46
const gchar *
47
fu_mkhi_status_to_string(FuMkhiStatus val)
48
0
{
49
0
    if (val == FU_MKHI_STATUS_SUCCESS)
50
0
        return "success";
51
0
    if (val == FU_MKHI_STATUS_INVALID_STATE)
52
0
        return "invalid-state";
53
0
    if (val == FU_MKHI_STATUS_MESSAGE_SKIPPED)
54
0
        return "message-skipped";
55
0
    if (val == FU_MKHI_STATUS_SIZE_ERROR)
56
0
        return "size-error";
57
0
    if (val == FU_MKHI_STATUS_UNKNOWN_PERHAPS_NOT_SUPPORTED)
58
0
        return "unknown-perhaps-not-supported";
59
0
    if (val == FU_MKHI_STATUS_NOT_SET)
60
0
        return "not-set";
61
0
    if (val == FU_MKHI_STATUS_NOT_AVAILABLE)
62
0
        return "not-available";
63
0
    if (val == FU_MKHI_STATUS_INVALID_ACCESS)
64
0
        return "invalid-access";
65
0
    if (val == FU_MKHI_STATUS_INVALID_PARAMS)
66
0
        return "invalid-params";
67
0
    if (val == FU_MKHI_STATUS_NOT_READY)
68
0
        return "not-ready";
69
0
    if (val == FU_MKHI_STATUS_NOT_SUPPORTED)
70
0
        return "not-supported";
71
0
    if (val == FU_MKHI_STATUS_INVALID_ADDRESS)
72
0
        return "invalid-address";
73
0
    if (val == FU_MKHI_STATUS_INVALID_COMMAND)
74
0
        return "invalid-command";
75
0
    if (val == FU_MKHI_STATUS_FAILURE)
76
0
        return "failure";
77
0
    if (val == FU_MKHI_STATUS_INVALID_RESOURCE)
78
0
        return "invalid-resource";
79
0
    if (val == FU_MKHI_STATUS_RESOURCE_IN_USE)
80
0
        return "resource-in-use";
81
0
    if (val == FU_MKHI_STATUS_NO_RESOURCE)
82
0
        return "no-resource";
83
0
    if (val == FU_MKHI_STATUS_GENERAL_ERROR)
84
0
        return "general-error";
85
0
    if (val == FU_MKHI_STATUS_LOWER_ARB_SVN)
86
0
        return "lower-arb-svn";
87
0
    if (val == FU_MKHI_STATUS_LOWER_TCB_SVN)
88
0
        return "lower-tcb-svn";
89
0
    if (val == FU_MKHI_STATUS_LOWER_VCN)
90
0
        return "lower-vcn";
91
0
    if (val == FU_MKHI_STATUS_UPDATE_IUP_SVN)
92
0
        return "update-iup-svn";
93
0
    if (val == FU_MKHI_STATUS_UPDATE_IUP_VCN)
94
0
        return "update-iup-vcn";
95
0
    if (val == FU_MKHI_STATUS_UPDATE_IMAGE_LEN)
96
0
        return "update-image-len";
97
0
    if (val == FU_MKHI_STATUS_UPDATE_PV_BIT)
98
0
        return "update-pv-bit";
99
0
    if (val == FU_MKHI_STATUS_UPDATE_ENGINEERING_MISMATCH)
100
0
        return "update-engineering-mismatch";
101
0
    if (val == FU_MKHI_STATUS_UPDATE_VER_MAN_FAILED_OROM)
102
0
        return "update-ver-man-failed-orom";
103
0
    if (val == FU_MKHI_STATUS_UPDATE_DEVICE_ID_NOT_MATCH)
104
0
        return "update-device-id-not-match";
105
0
    if (val == FU_MKHI_STATUS_UPDATE_OPROM_SECTION_NOT_EXIST)
106
0
        return "update-oprom-section-not-exist";
107
0
    if (val == FU_MKHI_STATUS_UPDATE_OPROM_INVALID_STRUCTURE)
108
0
        return "update-oprom-invalid-structure";
109
0
    if (val == FU_MKHI_STATUS_UPDATE_GET_OPROM_VERSION_FAILED0X103_C)
110
0
        return "update-get-oprom-version-failed0x103-c";
111
0
    if (val == FU_MKHI_STATUS_UPDATE_OROM_INVALID_STRUCTURE)
112
0
        return "update-orom-invalid-structure";
113
0
    if (val == FU_MKHI_STATUS_UPDATE_VER_MAN_FAILED_GFX_DATA)
114
0
        return "update-ver-man-failed-gfx-data";
115
0
    if (val == FU_MKHI_STATUS_UPDATE_GFX_DATA_OEM_MANUF_VER)
116
0
        return "update-gfx-data-oem-manuf-ver";
117
0
    return NULL;
118
0
}
119
120
static const gchar *
121
fu_mkhi_command_to_string(FuMkhiCommand val)
122
0
{
123
0
    if (val == FU_MKHI_COMMAND_READ_FILE)
124
0
        return "read-file";
125
0
    if (val == FU_MKHI_COMMAND_READ_FILE_EX)
126
0
        return "read-file-ex";
127
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_COMMIT)
128
0
        return "arbh-svn-commit";
129
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_GET_INFO)
130
0
        return "arbh-svn-get-info";
131
0
    if (val == FU_MKHI_COMMAND_READ_FILE_RESPONSE)
132
0
        return "read-file-response";
133
0
    if (val == FU_MKHI_COMMAND_READ_FILE_EX_RESPONSE)
134
0
        return "read-file-ex-response";
135
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_COMMIT_RESPONSE)
136
0
        return "arbh-svn-commit-response";
137
0
    if (val == FU_MKHI_COMMAND_ARBH_SVN_GET_INFO_RESPONSE)
138
0
        return "arbh-svn-get-info-response";
139
0
    return NULL;
140
0
}
141
142
static const gchar *
143
fu_mkhi_arbh_svn_info_entry_usage_id_to_string(FuMkhiArbhSvnInfoEntryUsageId val)
144
0
{
145
0
    if (val == FU_MKHI_ARBH_SVN_INFO_ENTRY_USAGE_ID_CSE_RBE)
146
0
        return "cse-rbe";
147
0
    return NULL;
148
0
}
149
/**
150
 * fu_mkhi_read_file_request_ref: (skip):
151
 **/
152
FuMkhiReadFileRequest *
153
fu_mkhi_read_file_request_ref(FuMkhiReadFileRequest *st)
154
0
{
155
0
    g_return_val_if_fail(st != NULL, NULL);
156
0
    st->refcount++;
157
0
    return st;
158
0
}
159
/**
160
 * fu_mkhi_read_file_request_unref: (skip):
161
 **/
162
void
163
fu_mkhi_read_file_request_unref(FuMkhiReadFileRequest *st)
164
0
{
165
0
    g_return_if_fail(st != NULL);
166
0
    if (st->refcount == 0) {
167
0
        g_critical("FuMkhiReadFileRequest refcount already zero");
168
0
        return;
169
0
    }
170
0
    if (--st->refcount > 0)
171
0
        return;
172
0
    if (st->buf != NULL)
173
0
        g_byte_array_unref(st->buf);
174
0
    g_free(st);
175
0
}
176
/**
177
 * fu_mkhi_read_file_request_new_internal: (skip):
178
 **/
179
static FuMkhiReadFileRequest *
180
fu_mkhi_read_file_request_new_internal(void)
181
0
{
182
0
    FuMkhiReadFileRequest *st = g_new0(FuMkhiReadFileRequest, 1);
183
0
    st->refcount = 1;
184
0
    return st;
185
0
}
186
187
/* getters */
188
189
/* setters */
190
/**
191
 * fu_mkhi_read_file_request_set_group_id: (skip):
192
 **/
193
static void
194
fu_mkhi_read_file_request_set_group_id(FuMkhiReadFileRequest *st, FuMkhiGroupId value)
195
0
{
196
0
    g_return_if_fail(st != NULL);
197
0
    st->buf->data[0] = value;
198
0
}
199
/**
200
 * fu_mkhi_read_file_request_set_command: (skip):
201
 **/
202
static void
203
fu_mkhi_read_file_request_set_command(FuMkhiReadFileRequest *st, FuMkhiCommand value)
204
0
{
205
0
    g_return_if_fail(st != NULL);
206
0
    st->buf->data[1] = value;
207
0
}
208
/**
209
 * fu_mkhi_read_file_request_set_result: (skip):
210
 **/
211
static void
212
fu_mkhi_read_file_request_set_result(FuMkhiReadFileRequest *st, guint8 value)
213
0
{
214
0
    g_return_if_fail(st != NULL);
215
0
    st->buf->data[3] = value;
216
0
}
217
/**
218
 * fu_mkhi_read_file_request_set_filename: (skip):
219
 **/
220
gboolean
221
fu_mkhi_read_file_request_set_filename(FuMkhiReadFileRequest *st, const gchar *value, GError **error)
222
0
{
223
0
    gsize len;
224
0
    g_return_val_if_fail(st != NULL, FALSE);
225
0
    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
226
0
    if (value == NULL) {
227
0
        memset(st->buf->data + 4, 0x0, 64);
228
0
        return TRUE;
229
0
    }
230
0
    len = strlen(value);
231
0
    if (len > 64) {
232
0
        g_set_error(error,
233
0
                    FWUPD_ERROR,
234
0
                    FWUPD_ERROR_INVALID_DATA,
235
0
                    "string '%s' (0x%x bytes) does not fit in FuMkhiReadFileRequest.filename (0x%x bytes)",
236
0
                    value, (guint) len, (guint) 64);
237
0
        return FALSE;
238
0
    }
239
0
    return fu_memcpy_safe(st->buf->data, st->buf->len, 4, (const guint8 *)value, len, 0x0, len, error);
240
0
}
241
/**
242
 * fu_mkhi_read_file_request_set_offset: (skip):
243
 **/
244
static void
245
fu_mkhi_read_file_request_set_offset(FuMkhiReadFileRequest *st, guint32 value)
246
0
{
247
0
    g_return_if_fail(st != NULL);
248
0
    fu_memwrite_uint32(st->buf->data + 68, value, G_LITTLE_ENDIAN);
249
0
}
250
/**
251
 * fu_mkhi_read_file_request_set_data_size: (skip):
252
 **/
253
void
254
fu_mkhi_read_file_request_set_data_size(FuMkhiReadFileRequest *st, guint32 value)
255
0
{
256
0
    g_return_if_fail(st != NULL);
257
0
    fu_memwrite_uint32(st->buf->data + 72, value, G_LITTLE_ENDIAN);
258
0
}
259
/**
260
 * fu_mkhi_read_file_request_set_flags: (skip):
261
 **/
262
void
263
fu_mkhi_read_file_request_set_flags(FuMkhiReadFileRequest *st, guint8 value)
264
0
{
265
0
    g_return_if_fail(st != NULL);
266
0
    st->buf->data[76] = value;
267
0
}
268
/**
269
 * fu_mkhi_read_file_request_new: (skip):
270
 **/
271
FuMkhiReadFileRequest *
272
fu_mkhi_read_file_request_new(void)
273
0
{
274
0
    FuMkhiReadFileRequest *st = fu_mkhi_read_file_request_new_internal();
275
0
    st->buf = g_byte_array_sized_new(77);
276
0
    fu_byte_array_set_size(st->buf, 77, 0x0);
277
0
    fu_mkhi_read_file_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
278
0
    fu_mkhi_read_file_request_set_command(st, FU_MKHI_COMMAND_READ_FILE);
279
0
    fu_mkhi_read_file_request_set_result(st, 0x0);
280
0
    fu_mkhi_read_file_request_set_offset(st, 0x0);
281
0
    return st;
282
0
}
283
/**
284
 * fu_mkhi_read_file_response_ref: (skip):
285
 **/
286
FuMkhiReadFileResponse *
287
fu_mkhi_read_file_response_ref(FuMkhiReadFileResponse *st)
288
0
{
289
0
    g_return_val_if_fail(st != NULL, NULL);
290
0
    st->refcount++;
291
0
    return st;
292
0
}
293
/**
294
 * fu_mkhi_read_file_response_unref: (skip):
295
 **/
296
void
297
fu_mkhi_read_file_response_unref(FuMkhiReadFileResponse *st)
298
0
{
299
0
    g_return_if_fail(st != NULL);
300
0
    if (st->refcount == 0) {
301
0
        g_critical("FuMkhiReadFileResponse refcount already zero");
302
0
        return;
303
0
    }
304
0
    if (--st->refcount > 0)
305
0
        return;
306
0
    if (st->buf != NULL)
307
0
        g_byte_array_unref(st->buf);
308
0
    g_free(st);
309
0
}
310
/**
311
 * fu_mkhi_read_file_response_new_internal: (skip):
312
 **/
313
static FuMkhiReadFileResponse *
314
fu_mkhi_read_file_response_new_internal(void)
315
0
{
316
0
    FuMkhiReadFileResponse *st = g_new0(FuMkhiReadFileResponse, 1);
317
0
    st->refcount = 1;
318
0
    return st;
319
0
}
320
321
/* getters */
322
/**
323
 * fu_mkhi_read_file_response_get_group_id: (skip):
324
 **/
325
static FuMkhiGroupId
326
fu_mkhi_read_file_response_get_group_id(const FuMkhiReadFileResponse *st)
327
0
{
328
0
    g_return_val_if_fail(st != NULL, 0x0);
329
0
    return st->buf->data[0];
330
0
}
331
/**
332
 * fu_mkhi_read_file_response_get_command: (skip):
333
 **/
334
static FuMkhiCommand
335
fu_mkhi_read_file_response_get_command(const FuMkhiReadFileResponse *st)
336
0
{
337
0
    g_return_val_if_fail(st != NULL, 0x0);
338
0
    return st->buf->data[1];
339
0
}
340
/**
341
 * fu_mkhi_read_file_response_get_result: (skip):
342
 **/
343
guint8
344
fu_mkhi_read_file_response_get_result(const FuMkhiReadFileResponse *st)
345
0
{
346
0
    g_return_val_if_fail(st != NULL, 0x0);
347
0
    return st->buf->data[3];
348
0
}
349
/**
350
 * fu_mkhi_read_file_response_get_data_size: (skip):
351
 **/
352
guint32
353
fu_mkhi_read_file_response_get_data_size(const FuMkhiReadFileResponse *st)
354
0
{
355
0
    g_return_val_if_fail(st != NULL, 0x0);
356
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
357
0
}
358
359
/* setters */
360
/**
361
 * fu_mkhi_read_file_response_to_string: (skip):
362
 **/
363
static gchar *
364
fu_mkhi_read_file_response_to_string(const FuMkhiReadFileResponse *st)
365
0
{
366
0
    g_autoptr(GString) str = g_string_new("FuMkhiReadFileResponse:\n");
367
0
    g_return_val_if_fail(st != NULL, NULL);
368
0
    g_string_append_printf(str, "  result: 0x%x\n",
369
0
                           (guint) fu_mkhi_read_file_response_get_result(st));
370
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
371
0
                           (guint) fu_mkhi_read_file_response_get_data_size(st));
372
0
    if (str->len > 0)
373
0
        g_string_set_size(str, str->len - 1);
374
0
    return g_string_free(g_steal_pointer(&str), FALSE);
375
0
}
376
static gboolean
377
fu_mkhi_read_file_response_validate_internal(FuMkhiReadFileResponse *st, GError **error)
378
0
{
379
0
    g_return_val_if_fail(st != NULL, FALSE);
380
0
    if (fu_mkhi_read_file_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
381
0
        g_set_error(error,
382
0
                    FWUPD_ERROR,
383
0
                    FWUPD_ERROR_INVALID_DATA,
384
0
                    "constant FuMkhiReadFileResponse.group_id was not valid, "
385
0
                    "expected 'FuMkhiGroupId' and got '%s'",
386
0
                    fu_mkhi_group_id_to_string(fu_mkhi_read_file_response_get_group_id(st)));
387
0
        return FALSE;
388
0
    }
389
0
    if (fu_mkhi_read_file_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_RESPONSE) {
390
0
        g_set_error(error,
391
0
                    FWUPD_ERROR,
392
0
                    FWUPD_ERROR_INVALID_DATA,
393
0
                    "constant FuMkhiReadFileResponse.command was not valid, "
394
0
                    "expected 'FuMkhiCommand' and got '%s'",
395
0
                    fu_mkhi_command_to_string(fu_mkhi_read_file_response_get_command(st)));
396
0
        return FALSE;
397
0
    }
398
0
    return TRUE;
399
0
}
400
static gboolean
401
fu_mkhi_read_file_response_parse_internal(FuMkhiReadFileResponse *st, GError **error)
402
0
{
403
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
404
0
        g_autofree gchar *str = fu_mkhi_read_file_response_to_string(st);
405
0
        g_debug("%s", str);
406
0
    }
407
0
    if (!fu_mkhi_read_file_response_validate_internal(st, error))
408
0
        return FALSE;
409
0
    return TRUE;
410
0
}
411
412
/**
413
 * fu_mkhi_read_file_response_parse: (skip):
414
 **/
415
FuMkhiReadFileResponse *
416
fu_mkhi_read_file_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
417
0
{
418
0
    g_autoptr(FuMkhiReadFileResponse) st = fu_mkhi_read_file_response_new_internal();
419
0
    g_return_val_if_fail(buf != NULL, NULL);
420
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
421
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
422
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileResponse: ");
423
0
        return NULL;
424
0
    }
425
0
    st->buf = g_byte_array_new();
426
0
    g_byte_array_append(st->buf, buf + offset, 8);
427
0
    if (!fu_mkhi_read_file_response_parse_internal(st, error))
428
0
        return NULL;
429
0
    return g_steal_pointer(&st);
430
0
}
431
/**
432
 * fu_mkhi_read_file_ex_request_ref: (skip):
433
 **/
434
FuMkhiReadFileExRequest *
435
fu_mkhi_read_file_ex_request_ref(FuMkhiReadFileExRequest *st)
436
0
{
437
0
    g_return_val_if_fail(st != NULL, NULL);
438
0
    st->refcount++;
439
0
    return st;
440
0
}
441
/**
442
 * fu_mkhi_read_file_ex_request_unref: (skip):
443
 **/
444
void
445
fu_mkhi_read_file_ex_request_unref(FuMkhiReadFileExRequest *st)
446
0
{
447
0
    g_return_if_fail(st != NULL);
448
0
    if (st->refcount == 0) {
449
0
        g_critical("FuMkhiReadFileExRequest refcount already zero");
450
0
        return;
451
0
    }
452
0
    if (--st->refcount > 0)
453
0
        return;
454
0
    if (st->buf != NULL)
455
0
        g_byte_array_unref(st->buf);
456
0
    g_free(st);
457
0
}
458
/**
459
 * fu_mkhi_read_file_ex_request_new_internal: (skip):
460
 **/
461
static FuMkhiReadFileExRequest *
462
fu_mkhi_read_file_ex_request_new_internal(void)
463
0
{
464
0
    FuMkhiReadFileExRequest *st = g_new0(FuMkhiReadFileExRequest, 1);
465
0
    st->refcount = 1;
466
0
    return st;
467
0
}
468
469
/* getters */
470
471
/* setters */
472
/**
473
 * fu_mkhi_read_file_ex_request_set_group_id: (skip):
474
 **/
475
static void
476
fu_mkhi_read_file_ex_request_set_group_id(FuMkhiReadFileExRequest *st, FuMkhiGroupId value)
477
0
{
478
0
    g_return_if_fail(st != NULL);
479
0
    st->buf->data[0] = value;
480
0
}
481
/**
482
 * fu_mkhi_read_file_ex_request_set_command: (skip):
483
 **/
484
static void
485
fu_mkhi_read_file_ex_request_set_command(FuMkhiReadFileExRequest *st, FuMkhiCommand value)
486
0
{
487
0
    g_return_if_fail(st != NULL);
488
0
    st->buf->data[1] = value;
489
0
}
490
/**
491
 * fu_mkhi_read_file_ex_request_set_result: (skip):
492
 **/
493
static void
494
fu_mkhi_read_file_ex_request_set_result(FuMkhiReadFileExRequest *st, guint8 value)
495
0
{
496
0
    g_return_if_fail(st != NULL);
497
0
    st->buf->data[3] = value;
498
0
}
499
/**
500
 * fu_mkhi_read_file_ex_request_set_file_id: (skip):
501
 **/
502
void
503
fu_mkhi_read_file_ex_request_set_file_id(FuMkhiReadFileExRequest *st, guint32 value)
504
0
{
505
0
    g_return_if_fail(st != NULL);
506
0
    fu_memwrite_uint32(st->buf->data + 4, value, G_LITTLE_ENDIAN);
507
0
}
508
/**
509
 * fu_mkhi_read_file_ex_request_set_offset: (skip):
510
 **/
511
static void
512
fu_mkhi_read_file_ex_request_set_offset(FuMkhiReadFileExRequest *st, guint32 value)
513
0
{
514
0
    g_return_if_fail(st != NULL);
515
0
    fu_memwrite_uint32(st->buf->data + 8, value, G_LITTLE_ENDIAN);
516
0
}
517
/**
518
 * fu_mkhi_read_file_ex_request_set_data_size: (skip):
519
 **/
520
void
521
fu_mkhi_read_file_ex_request_set_data_size(FuMkhiReadFileExRequest *st, guint32 value)
522
0
{
523
0
    g_return_if_fail(st != NULL);
524
0
    fu_memwrite_uint32(st->buf->data + 12, value, G_LITTLE_ENDIAN);
525
0
}
526
/**
527
 * fu_mkhi_read_file_ex_request_set_flags: (skip):
528
 **/
529
void
530
fu_mkhi_read_file_ex_request_set_flags(FuMkhiReadFileExRequest *st, guint8 value)
531
0
{
532
0
    g_return_if_fail(st != NULL);
533
0
    st->buf->data[16] = value;
534
0
}
535
/**
536
 * fu_mkhi_read_file_ex_request_new: (skip):
537
 **/
538
FuMkhiReadFileExRequest *
539
fu_mkhi_read_file_ex_request_new(void)
540
0
{
541
0
    FuMkhiReadFileExRequest *st = fu_mkhi_read_file_ex_request_new_internal();
542
0
    st->buf = g_byte_array_sized_new(17);
543
0
    fu_byte_array_set_size(st->buf, 17, 0x0);
544
0
    fu_mkhi_read_file_ex_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
545
0
    fu_mkhi_read_file_ex_request_set_command(st, FU_MKHI_COMMAND_READ_FILE_EX);
546
0
    fu_mkhi_read_file_ex_request_set_result(st, 0x0);
547
0
    fu_mkhi_read_file_ex_request_set_offset(st, 0x0);
548
0
    return st;
549
0
}
550
/**
551
 * fu_mkhi_read_file_ex_response_ref: (skip):
552
 **/
553
FuMkhiReadFileExResponse *
554
fu_mkhi_read_file_ex_response_ref(FuMkhiReadFileExResponse *st)
555
0
{
556
0
    g_return_val_if_fail(st != NULL, NULL);
557
0
    st->refcount++;
558
0
    return st;
559
0
}
560
/**
561
 * fu_mkhi_read_file_ex_response_unref: (skip):
562
 **/
563
void
564
fu_mkhi_read_file_ex_response_unref(FuMkhiReadFileExResponse *st)
565
0
{
566
0
    g_return_if_fail(st != NULL);
567
0
    if (st->refcount == 0) {
568
0
        g_critical("FuMkhiReadFileExResponse refcount already zero");
569
0
        return;
570
0
    }
571
0
    if (--st->refcount > 0)
572
0
        return;
573
0
    if (st->buf != NULL)
574
0
        g_byte_array_unref(st->buf);
575
0
    g_free(st);
576
0
}
577
/**
578
 * fu_mkhi_read_file_ex_response_new_internal: (skip):
579
 **/
580
static FuMkhiReadFileExResponse *
581
fu_mkhi_read_file_ex_response_new_internal(void)
582
0
{
583
0
    FuMkhiReadFileExResponse *st = g_new0(FuMkhiReadFileExResponse, 1);
584
0
    st->refcount = 1;
585
0
    return st;
586
0
}
587
588
/* getters */
589
/**
590
 * fu_mkhi_read_file_ex_response_get_group_id: (skip):
591
 **/
592
static FuMkhiGroupId
593
fu_mkhi_read_file_ex_response_get_group_id(const FuMkhiReadFileExResponse *st)
594
0
{
595
0
    g_return_val_if_fail(st != NULL, 0x0);
596
0
    return st->buf->data[0];
597
0
}
598
/**
599
 * fu_mkhi_read_file_ex_response_get_command: (skip):
600
 **/
601
static FuMkhiCommand
602
fu_mkhi_read_file_ex_response_get_command(const FuMkhiReadFileExResponse *st)
603
0
{
604
0
    g_return_val_if_fail(st != NULL, 0x0);
605
0
    return st->buf->data[1];
606
0
}
607
/**
608
 * fu_mkhi_read_file_ex_response_get_result: (skip):
609
 **/
610
guint8
611
fu_mkhi_read_file_ex_response_get_result(const FuMkhiReadFileExResponse *st)
612
0
{
613
0
    g_return_val_if_fail(st != NULL, 0x0);
614
0
    return st->buf->data[3];
615
0
}
616
/**
617
 * fu_mkhi_read_file_ex_response_get_data_size: (skip):
618
 **/
619
guint32
620
fu_mkhi_read_file_ex_response_get_data_size(const FuMkhiReadFileExResponse *st)
621
0
{
622
0
    g_return_val_if_fail(st != NULL, 0x0);
623
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
624
0
}
625
626
/* setters */
627
/**
628
 * fu_mkhi_read_file_ex_response_to_string: (skip):
629
 **/
630
static gchar *
631
fu_mkhi_read_file_ex_response_to_string(const FuMkhiReadFileExResponse *st)
632
0
{
633
0
    g_autoptr(GString) str = g_string_new("FuMkhiReadFileExResponse:\n");
634
0
    g_return_val_if_fail(st != NULL, NULL);
635
0
    g_string_append_printf(str, "  result: 0x%x\n",
636
0
                           (guint) fu_mkhi_read_file_ex_response_get_result(st));
637
0
    g_string_append_printf(str, "  data_size: 0x%x\n",
638
0
                           (guint) fu_mkhi_read_file_ex_response_get_data_size(st));
639
0
    if (str->len > 0)
640
0
        g_string_set_size(str, str->len - 1);
641
0
    return g_string_free(g_steal_pointer(&str), FALSE);
642
0
}
643
static gboolean
644
fu_mkhi_read_file_ex_response_validate_internal(FuMkhiReadFileExResponse *st, GError **error)
645
0
{
646
0
    g_return_val_if_fail(st != NULL, FALSE);
647
0
    if (fu_mkhi_read_file_ex_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
648
0
        g_set_error(error,
649
0
                    FWUPD_ERROR,
650
0
                    FWUPD_ERROR_INVALID_DATA,
651
0
                    "constant FuMkhiReadFileExResponse.group_id was not valid, "
652
0
                    "expected 'FuMkhiGroupId' and got '%s'",
653
0
                    fu_mkhi_group_id_to_string(fu_mkhi_read_file_ex_response_get_group_id(st)));
654
0
        return FALSE;
655
0
    }
656
0
    if (fu_mkhi_read_file_ex_response_get_command(st) != FU_MKHI_COMMAND_READ_FILE_EX_RESPONSE) {
657
0
        g_set_error(error,
658
0
                    FWUPD_ERROR,
659
0
                    FWUPD_ERROR_INVALID_DATA,
660
0
                    "constant FuMkhiReadFileExResponse.command was not valid, "
661
0
                    "expected 'FuMkhiCommand' and got '%s'",
662
0
                    fu_mkhi_command_to_string(fu_mkhi_read_file_ex_response_get_command(st)));
663
0
        return FALSE;
664
0
    }
665
0
    return TRUE;
666
0
}
667
static gboolean
668
fu_mkhi_read_file_ex_response_parse_internal(FuMkhiReadFileExResponse *st, GError **error)
669
0
{
670
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
671
0
        g_autofree gchar *str = fu_mkhi_read_file_ex_response_to_string(st);
672
0
        g_debug("%s", str);
673
0
    }
674
0
    if (!fu_mkhi_read_file_ex_response_validate_internal(st, error))
675
0
        return FALSE;
676
0
    return TRUE;
677
0
}
678
679
/**
680
 * fu_mkhi_read_file_ex_response_parse: (skip):
681
 **/
682
FuMkhiReadFileExResponse *
683
fu_mkhi_read_file_ex_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
684
0
{
685
0
    g_autoptr(FuMkhiReadFileExResponse) st = fu_mkhi_read_file_ex_response_new_internal();
686
0
    g_return_val_if_fail(buf != NULL, NULL);
687
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
688
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
689
0
        g_prefix_error_literal(error, "invalid struct FuMkhiReadFileExResponse: ");
690
0
        return NULL;
691
0
    }
692
0
    st->buf = g_byte_array_new();
693
0
    g_byte_array_append(st->buf, buf + offset, 8);
694
0
    if (!fu_mkhi_read_file_ex_response_parse_internal(st, error))
695
0
        return NULL;
696
0
    return g_steal_pointer(&st);
697
0
}
698
/**
699
 * fu_mkhi_arbh_svn_info_entry_ref: (skip):
700
 **/
701
FuMkhiArbhSvnInfoEntry *
702
fu_mkhi_arbh_svn_info_entry_ref(FuMkhiArbhSvnInfoEntry *st)
703
0
{
704
0
    g_return_val_if_fail(st != NULL, NULL);
705
0
    st->refcount++;
706
0
    return st;
707
0
}
708
/**
709
 * fu_mkhi_arbh_svn_info_entry_unref: (skip):
710
 **/
711
void
712
fu_mkhi_arbh_svn_info_entry_unref(FuMkhiArbhSvnInfoEntry *st)
713
0
{
714
0
    g_return_if_fail(st != NULL);
715
0
    if (st->refcount == 0) {
716
0
        g_critical("FuMkhiArbhSvnInfoEntry refcount already zero");
717
0
        return;
718
0
    }
719
0
    if (--st->refcount > 0)
720
0
        return;
721
0
    if (st->buf != NULL)
722
0
        g_byte_array_unref(st->buf);
723
0
    g_free(st);
724
0
}
725
/**
726
 * fu_mkhi_arbh_svn_info_entry_new_internal: (skip):
727
 **/
728
static FuMkhiArbhSvnInfoEntry *
729
fu_mkhi_arbh_svn_info_entry_new_internal(void)
730
0
{
731
0
    FuMkhiArbhSvnInfoEntry *st = g_new0(FuMkhiArbhSvnInfoEntry, 1);
732
0
    st->refcount = 1;
733
0
    return st;
734
0
}
735
736
/* getters */
737
/**
738
 * fu_mkhi_arbh_svn_info_entry_get_usage_id: (skip):
739
 **/
740
FuMkhiArbhSvnInfoEntryUsageId
741
fu_mkhi_arbh_svn_info_entry_get_usage_id(const FuMkhiArbhSvnInfoEntry *st)
742
0
{
743
0
    g_return_val_if_fail(st != NULL, 0x0);
744
0
    return st->buf->data[0];
745
0
}
746
/**
747
 * fu_mkhi_arbh_svn_info_entry_get_executing: (skip):
748
 **/
749
guint8
750
fu_mkhi_arbh_svn_info_entry_get_executing(const FuMkhiArbhSvnInfoEntry *st)
751
0
{
752
0
    g_return_val_if_fail(st != NULL, 0x0);
753
0
    return st->buf->data[2];
754
0
}
755
/**
756
 * fu_mkhi_arbh_svn_info_entry_get_min_allowed: (skip):
757
 **/
758
guint8
759
fu_mkhi_arbh_svn_info_entry_get_min_allowed(const FuMkhiArbhSvnInfoEntry *st)
760
0
{
761
0
    g_return_val_if_fail(st != NULL, 0x0);
762
0
    return st->buf->data[3];
763
0
}
764
765
/* setters */
766
/**
767
 * fu_mkhi_arbh_svn_info_entry_to_string: (skip):
768
 **/
769
static gchar *
770
fu_mkhi_arbh_svn_info_entry_to_string(const FuMkhiArbhSvnInfoEntry *st)
771
0
{
772
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnInfoEntry:\n");
773
0
    g_return_val_if_fail(st != NULL, NULL);
774
0
    {
775
0
        const gchar *tmp = fu_mkhi_arbh_svn_info_entry_usage_id_to_string(fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
776
0
        if (tmp != NULL) {
777
0
            g_string_append_printf(str, "  usage_id: 0x%x [%s]\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st), tmp);
778
0
        } else {
779
0
            g_string_append_printf(str, "  usage_id: 0x%x\n", (guint) fu_mkhi_arbh_svn_info_entry_get_usage_id(st));
780
0
        }
781
0
    }
782
0
    g_string_append_printf(str, "  executing: 0x%x\n",
783
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_executing(st));
784
0
    g_string_append_printf(str, "  min_allowed: 0x%x\n",
785
0
                           (guint) fu_mkhi_arbh_svn_info_entry_get_min_allowed(st));
786
0
    if (str->len > 0)
787
0
        g_string_set_size(str, str->len - 1);
788
0
    return g_string_free(g_steal_pointer(&str), FALSE);
789
0
}
790
static gboolean
791
fu_mkhi_arbh_svn_info_entry_validate_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
792
0
{
793
0
    g_return_val_if_fail(st != NULL, FALSE);
794
0
    return TRUE;
795
0
}
796
static gboolean
797
fu_mkhi_arbh_svn_info_entry_parse_internal(FuMkhiArbhSvnInfoEntry *st, GError **error)
798
0
{
799
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
800
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_info_entry_to_string(st);
801
0
        g_debug("%s", str);
802
0
    }
803
0
    if (!fu_mkhi_arbh_svn_info_entry_validate_internal(st, error))
804
0
        return FALSE;
805
0
    return TRUE;
806
0
}
807
808
/**
809
 * fu_mkhi_arbh_svn_info_entry_parse: (skip):
810
 **/
811
FuMkhiArbhSvnInfoEntry *
812
fu_mkhi_arbh_svn_info_entry_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
813
0
{
814
0
    g_autoptr(FuMkhiArbhSvnInfoEntry) st = fu_mkhi_arbh_svn_info_entry_new_internal();
815
0
    g_return_val_if_fail(buf != NULL, NULL);
816
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
817
0
    if (!fu_memchk_read(bufsz, offset, 4, error)) {
818
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnInfoEntry: ");
819
0
        return NULL;
820
0
    }
821
0
    st->buf = g_byte_array_new();
822
0
    g_byte_array_append(st->buf, buf + offset, 4);
823
0
    if (!fu_mkhi_arbh_svn_info_entry_parse_internal(st, error))
824
0
        return NULL;
825
0
    return g_steal_pointer(&st);
826
0
}
827
/**
828
 * fu_mkhi_arbh_svn_get_info_request_ref: (skip):
829
 **/
830
FuMkhiArbhSvnGetInfoRequest *
831
fu_mkhi_arbh_svn_get_info_request_ref(FuMkhiArbhSvnGetInfoRequest *st)
832
0
{
833
0
    g_return_val_if_fail(st != NULL, NULL);
834
0
    st->refcount++;
835
0
    return st;
836
0
}
837
/**
838
 * fu_mkhi_arbh_svn_get_info_request_unref: (skip):
839
 **/
840
void
841
fu_mkhi_arbh_svn_get_info_request_unref(FuMkhiArbhSvnGetInfoRequest *st)
842
0
{
843
0
    g_return_if_fail(st != NULL);
844
0
    if (st->refcount == 0) {
845
0
        g_critical("FuMkhiArbhSvnGetInfoRequest refcount already zero");
846
0
        return;
847
0
    }
848
0
    if (--st->refcount > 0)
849
0
        return;
850
0
    if (st->buf != NULL)
851
0
        g_byte_array_unref(st->buf);
852
0
    g_free(st);
853
0
}
854
/**
855
 * fu_mkhi_arbh_svn_get_info_request_new_internal: (skip):
856
 **/
857
static FuMkhiArbhSvnGetInfoRequest *
858
fu_mkhi_arbh_svn_get_info_request_new_internal(void)
859
0
{
860
0
    FuMkhiArbhSvnGetInfoRequest *st = g_new0(FuMkhiArbhSvnGetInfoRequest, 1);
861
0
    st->refcount = 1;
862
0
    return st;
863
0
}
864
865
/* getters */
866
867
/* setters */
868
/**
869
 * fu_mkhi_arbh_svn_get_info_request_set_group_id: (skip):
870
 **/
871
static void
872
fu_mkhi_arbh_svn_get_info_request_set_group_id(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiGroupId value)
873
0
{
874
0
    g_return_if_fail(st != NULL);
875
0
    st->buf->data[0] = value;
876
0
}
877
/**
878
 * fu_mkhi_arbh_svn_get_info_request_set_command: (skip):
879
 **/
880
static void
881
fu_mkhi_arbh_svn_get_info_request_set_command(FuMkhiArbhSvnGetInfoRequest *st, FuMkhiCommand value)
882
0
{
883
0
    g_return_if_fail(st != NULL);
884
0
    st->buf->data[1] = value;
885
0
}
886
/**
887
 * fu_mkhi_arbh_svn_get_info_request_set_result: (skip):
888
 **/
889
static void
890
fu_mkhi_arbh_svn_get_info_request_set_result(FuMkhiArbhSvnGetInfoRequest *st, guint8 value)
891
0
{
892
0
    g_return_if_fail(st != NULL);
893
0
    st->buf->data[3] = value;
894
0
}
895
/**
896
 * fu_mkhi_arbh_svn_get_info_request_new: (skip):
897
 **/
898
FuMkhiArbhSvnGetInfoRequest *
899
fu_mkhi_arbh_svn_get_info_request_new(void)
900
0
{
901
0
    FuMkhiArbhSvnGetInfoRequest *st = fu_mkhi_arbh_svn_get_info_request_new_internal();
902
0
    st->buf = g_byte_array_sized_new(4);
903
0
    fu_byte_array_set_size(st->buf, 4, 0x0);
904
0
    fu_mkhi_arbh_svn_get_info_request_set_group_id(st, FU_MKHI_GROUP_ID_MCA);
905
0
    fu_mkhi_arbh_svn_get_info_request_set_command(st, FU_MKHI_COMMAND_ARBH_SVN_GET_INFO);
906
0
    fu_mkhi_arbh_svn_get_info_request_set_result(st, 0x0);
907
0
    return st;
908
0
}
909
/**
910
 * fu_mkhi_arbh_svn_get_info_response_ref: (skip):
911
 **/
912
FuMkhiArbhSvnGetInfoResponse *
913
fu_mkhi_arbh_svn_get_info_response_ref(FuMkhiArbhSvnGetInfoResponse *st)
914
0
{
915
0
    g_return_val_if_fail(st != NULL, NULL);
916
0
    st->refcount++;
917
0
    return st;
918
0
}
919
/**
920
 * fu_mkhi_arbh_svn_get_info_response_unref: (skip):
921
 **/
922
void
923
fu_mkhi_arbh_svn_get_info_response_unref(FuMkhiArbhSvnGetInfoResponse *st)
924
0
{
925
0
    g_return_if_fail(st != NULL);
926
0
    if (st->refcount == 0) {
927
0
        g_critical("FuMkhiArbhSvnGetInfoResponse refcount already zero");
928
0
        return;
929
0
    }
930
0
    if (--st->refcount > 0)
931
0
        return;
932
0
    if (st->buf != NULL)
933
0
        g_byte_array_unref(st->buf);
934
0
    g_free(st);
935
0
}
936
/**
937
 * fu_mkhi_arbh_svn_get_info_response_new_internal: (skip):
938
 **/
939
static FuMkhiArbhSvnGetInfoResponse *
940
fu_mkhi_arbh_svn_get_info_response_new_internal(void)
941
0
{
942
0
    FuMkhiArbhSvnGetInfoResponse *st = g_new0(FuMkhiArbhSvnGetInfoResponse, 1);
943
0
    st->refcount = 1;
944
0
    return st;
945
0
}
946
947
/* getters */
948
/**
949
 * fu_mkhi_arbh_svn_get_info_response_get_group_id: (skip):
950
 **/
951
static FuMkhiGroupId
952
fu_mkhi_arbh_svn_get_info_response_get_group_id(const FuMkhiArbhSvnGetInfoResponse *st)
953
0
{
954
0
    g_return_val_if_fail(st != NULL, 0x0);
955
0
    return st->buf->data[0];
956
0
}
957
/**
958
 * fu_mkhi_arbh_svn_get_info_response_get_command: (skip):
959
 **/
960
static FuMkhiCommand
961
fu_mkhi_arbh_svn_get_info_response_get_command(const FuMkhiArbhSvnGetInfoResponse *st)
962
0
{
963
0
    g_return_val_if_fail(st != NULL, 0x0);
964
0
    return st->buf->data[1];
965
0
}
966
/**
967
 * fu_mkhi_arbh_svn_get_info_response_get_result: (skip):
968
 **/
969
guint8
970
fu_mkhi_arbh_svn_get_info_response_get_result(const FuMkhiArbhSvnGetInfoResponse *st)
971
0
{
972
0
    g_return_val_if_fail(st != NULL, 0x0);
973
0
    return st->buf->data[3];
974
0
}
975
/**
976
 * fu_mkhi_arbh_svn_get_info_response_get_num_entries: (skip):
977
 **/
978
guint32
979
fu_mkhi_arbh_svn_get_info_response_get_num_entries(const FuMkhiArbhSvnGetInfoResponse *st)
980
0
{
981
0
    g_return_val_if_fail(st != NULL, 0x0);
982
0
    return fu_memread_uint32(st->buf->data + 4, G_LITTLE_ENDIAN);
983
0
}
984
985
/* setters */
986
/**
987
 * fu_mkhi_arbh_svn_get_info_response_to_string: (skip):
988
 **/
989
static gchar *
990
fu_mkhi_arbh_svn_get_info_response_to_string(const FuMkhiArbhSvnGetInfoResponse *st)
991
0
{
992
0
    g_autoptr(GString) str = g_string_new("FuMkhiArbhSvnGetInfoResponse:\n");
993
0
    g_return_val_if_fail(st != NULL, NULL);
994
0
    g_string_append_printf(str, "  result: 0x%x\n",
995
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_result(st));
996
0
    g_string_append_printf(str, "  num_entries: 0x%x\n",
997
0
                           (guint) fu_mkhi_arbh_svn_get_info_response_get_num_entries(st));
998
0
    if (str->len > 0)
999
0
        g_string_set_size(str, str->len - 1);
1000
0
    return g_string_free(g_steal_pointer(&str), FALSE);
1001
0
}
1002
static gboolean
1003
fu_mkhi_arbh_svn_get_info_response_validate_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
1004
0
{
1005
0
    g_return_val_if_fail(st != NULL, FALSE);
1006
0
    if (fu_mkhi_arbh_svn_get_info_response_get_group_id(st) != FU_MKHI_GROUP_ID_MCA) {
1007
0
        g_set_error(error,
1008
0
                    FWUPD_ERROR,
1009
0
                    FWUPD_ERROR_INVALID_DATA,
1010
0
                    "constant FuMkhiArbhSvnGetInfoResponse.group_id was not valid, "
1011
0
                    "expected 'FuMkhiGroupId' and got '%s'",
1012
0
                    fu_mkhi_group_id_to_string(fu_mkhi_arbh_svn_get_info_response_get_group_id(st)));
1013
0
        return FALSE;
1014
0
    }
1015
0
    if (fu_mkhi_arbh_svn_get_info_response_get_command(st) != FU_MKHI_COMMAND_ARBH_SVN_GET_INFO_RESPONSE) {
1016
0
        g_set_error(error,
1017
0
                    FWUPD_ERROR,
1018
0
                    FWUPD_ERROR_INVALID_DATA,
1019
0
                    "constant FuMkhiArbhSvnGetInfoResponse.command was not valid, "
1020
0
                    "expected 'FuMkhiCommand' and got '%s'",
1021
0
                    fu_mkhi_command_to_string(fu_mkhi_arbh_svn_get_info_response_get_command(st)));
1022
0
        return FALSE;
1023
0
    }
1024
0
    return TRUE;
1025
0
}
1026
static gboolean
1027
fu_mkhi_arbh_svn_get_info_response_parse_internal(FuMkhiArbhSvnGetInfoResponse *st, GError **error)
1028
0
{
1029
0
    if (g_getenv("FWUPD_VERBOSE") != NULL) {
1030
0
        g_autofree gchar *str = fu_mkhi_arbh_svn_get_info_response_to_string(st);
1031
0
        g_debug("%s", str);
1032
0
    }
1033
0
    if (!fu_mkhi_arbh_svn_get_info_response_validate_internal(st, error))
1034
0
        return FALSE;
1035
0
    return TRUE;
1036
0
}
1037
1038
/**
1039
 * fu_mkhi_arbh_svn_get_info_response_parse: (skip):
1040
 **/
1041
FuMkhiArbhSvnGetInfoResponse *
1042
fu_mkhi_arbh_svn_get_info_response_parse(const guint8 *buf, gsize bufsz, gsize offset, GError **error)
1043
0
{
1044
0
    g_autoptr(FuMkhiArbhSvnGetInfoResponse) st = fu_mkhi_arbh_svn_get_info_response_new_internal();
1045
0
    g_return_val_if_fail(buf != NULL, NULL);
1046
0
    g_return_val_if_fail(error == NULL || *error == NULL, NULL);
1047
0
    if (!fu_memchk_read(bufsz, offset, 8, error)) {
1048
0
        g_prefix_error_literal(error, "invalid struct FuMkhiArbhSvnGetInfoResponse: ");
1049
0
        return NULL;
1050
0
    }
1051
0
    st->buf = g_byte_array_new();
1052
0
    g_byte_array_append(st->buf, buf + offset, 8);
1053
0
    if (!fu_mkhi_arbh_svn_get_info_response_parse_internal(st, error))
1054
0
        return NULL;
1055
0
    return g_steal_pointer(&st);
1056
0
}