From aff64d3e756d0f3fc975a1eb56d07c3db921b53c Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Tue, 22 Sep 2020 19:46:29 +0100 Subject: [PATCH] trivial: Allow specifying zero-sized data sections This can be done using '' to specify a zero-sized image. --- libfwupdplugin/fu-firmware-image.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libfwupdplugin/fu-firmware-image.c b/libfwupdplugin/fu-firmware-image.c index 7953e7112..f5d562239 100644 --- a/libfwupdplugin/fu-firmware-image.c +++ b/libfwupdplugin/fu-firmware-image.c @@ -336,6 +336,7 @@ fu_firmware_image_build (FuFirmwareImage *self, XbNode *n, GError **error) FuFirmwareImageClass *klass = FU_FIRMWARE_IMAGE_GET_CLASS (self); guint64 tmpval; const gchar *tmp; + g_autoptr(XbNode) data = NULL; g_return_val_if_fail (FU_IS_FIRMWARE_IMAGE (self), FALSE); g_return_val_if_fail (XB_IS_NODE (n), FALSE); @@ -365,14 +366,18 @@ fu_firmware_image_build (FuFirmwareImage *self, XbNode *n, GError **error) fu_firmware_image_set_bytes (self, blob); fu_firmware_image_set_filename (self, tmp); } - tmp = xb_node_query_text (n, "data", NULL); - if (tmp != NULL) { + data = xb_node_query_first (n, "data", NULL); + if (data != NULL && xb_node_get_text (data) != NULL) { gsize bufsz = 0; g_autofree guchar *buf = NULL; g_autoptr(GBytes) blob = NULL; - buf = g_base64_decode (tmp, &bufsz); + buf = g_base64_decode (xb_node_get_text (data), &bufsz); blob = g_bytes_new (buf, bufsz); fu_firmware_image_set_bytes (self, blob); + } else if (data != NULL) { + g_autoptr(GBytes) blob = NULL; + blob = g_bytes_new (NULL, 0); + fu_firmware_image_set_bytes (self, blob); } /* subclassed */