File 0002-system-updater-Parse-updater-format-from-XML-configu.patch of Package wicked

From ebb3e0d38a501d15956c1b9fa270df1dbc03b8e4 Mon Sep 17 00:00:00 2001
From: Stephan Brunner <s.brunner@stephan-brunner.net>
Date: Mon, 9 Oct 2023 10:55:33 +0200
Subject: [PATCH 1/8] system-updater: Parse updater format from XML
 configuration to ensure install calls can run.
Reference: gh#openSUSE/wicked#985 
Upstream: submitted

In ni_system_updaters_init(), the updater's format is set by using ni_updater_format_type(ex->format).
This in turn is used by ni_system_updater_generic_leaseinfo_create(), which is called by ni_system_updater_generic_install_call().
As ex->format is never actually set, ni_system_updater_generic_leaseinfo_create will always fail with an unknown format error and the install call is never executed.
---
 src/appconfig.c | 12 ++++++++++++
 src/extension.c |  1 +
 2 files changed, 13 insertions(+)

diff --git a/src/appconfig.c b/src/appconfig.c
index 82afb403..53d82ba5 100644
--- a/src/appconfig.c
+++ b/src/appconfig.c
@@ -2025,6 +2025,7 @@ ni_config_parse_system_updater(ni_extension_t **list, xml_node_t *node)
 {
 	ni_extension_t *ex, *old;
 	const char *name;
+	const char *format;
 
 	ni_assert(list && node);
 
@@ -2047,6 +2048,17 @@ ni_config_parse_system_updater(ni_extension_t **list, xml_node_t *node)
 		return FALSE;
 	}
 
+	format = xml_node_get_attr(node, "format");
+	if (format) {
+		ex->format = strdup(format);
+
+		if (!ex->format) {
+			ni_warn("[%s] failed to allocate memory for format-string", node->name);
+			ni_extension_free(ex);
+			return FALSE;
+		}
+	}
+
 	if (ex->c_bindings) {
 		ni_warn("[%s] builtin actions not supported in %s extensions",
 				xml_node_location(node), node->name);
diff --git a/src/extension.c b/src/extension.c
index 4f075e20..bf23d0c0 100644
--- a/src/extension.c
+++ b/src/extension.c
@@ -199,6 +199,7 @@ ni_extension_free(ni_extension_t *ex)
 	if (ex) {
 		ni_string_free(&ex->name);
 		ni_string_free(&ex->interface);
+		ni_string_free(&ex->format);
 
 		ni_script_action_list_destroy(&ex->actions);
 		ni_c_binding_list_destroy(&ex->c_bindings);
-- 
2.35.3

openSUSE Build Service is sponsored by