fwupd/libfwupdplugin/fu-fuzzer-firmware.c.in
Richard Hughes 0b7af7d54b trivial: Ignore the return value of setenv() in most cases
This makes Coverity happy.
2022-04-13 15:08:12 +01:00

39 lines
1.0 KiB
C

/*
* Copyright (C) 2020 Richard Hughes <richard@hughsie.com>
*
* SPDX-License-Identifier: LGPL-2.1+
*/
#include "config.h"
#include "@INCLUDE@"
int
LLVMFuzzerTestOneInput(const guint8 *data, gsize size)
{
g_autoptr(FuFirmware) firmware = FU_FIRMWARE(@FIRMWARENEW@());
g_autoptr(GBytes) fw = g_bytes_new(data, size);
gboolean ret;
(void)g_setenv("G_DEBUG", "fatal-criticals", FALSE);
ret = fu_firmware_parse(firmware, fw, FWUPD_INSTALL_FLAG_NONE, NULL);
if (!ret && fu_firmware_has_flag(firmware, FU_FIRMWARE_FLAG_HAS_CHECKSUM)) {
g_clear_object(&firmware);
firmware = FU_FIRMWARE(@FIRMWARENEW@());
ret = fu_firmware_parse(firmware,
fw,
FWUPD_INSTALL_FLAG_NO_SEARCH |
FWUPD_INSTALL_FLAG_IGNORE_VID_PID |
FWUPD_INSTALL_FLAG_IGNORE_CHECKSUM,
NULL);
}
if (ret) {
g_autofree gchar *str = fu_firmware_to_string(firmware);
g_autoptr(GBytes) fw2 = fu_firmware_write(firmware, NULL);
g_print("%s", str);
if (fw2 != NULL)
g_print("[%" G_GSIZE_FORMAT " bytes]\n", g_bytes_get_size(fw2));
}
return 0;
}