From efb76916bce8d702380f13caccad2d0f6c890f2d Mon Sep 17 00:00:00 2001 From: ozgen Date: Mon, 2 Feb 2026 16:49:22 +0100 Subject: [PATCH 1/2] Add: Add latest_agent_version and latest_updater_version fields to agent struct --- agent_controller/agent_controller.c | 8 ++++++++ agent_controller/agent_controller.h | 2 ++ agent_controller/agent_controller_tests.c | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/agent_controller/agent_controller.c b/agent_controller/agent_controller.c index 41d63af3..5c2bec6a 100644 --- a/agent_controller/agent_controller.c +++ b/agent_controller/agent_controller.c @@ -385,11 +385,19 @@ agent_controller_parse_agent (cJSON *item) /* Versions / platform */ const gchar *upd_ver = gvm_json_obj_str (item, "updater_version"); const gchar *agt_ver = gvm_json_obj_str (item, "agent_version"); + const gchar *latest_agt_ver = gvm_json_obj_str (item, "latest_agent_version"); + const gchar *latest_updater_ver = + gvm_json_obj_str (item, "latest_updater_version"); const gchar *os_str = gvm_json_obj_str (item, "operating_system"); const gchar *arch = gvm_json_obj_str (item, "architecture"); agent->updater_version = upd_ver ? g_strdup (upd_ver) : NULL; agent->agent_version = agt_ver ? g_strdup (agt_ver) : NULL; + agent->latest_agent_version = + latest_agt_ver ? g_strdup (latest_agt_ver) : NULL; + agent->latest_updater_version = + latest_updater_ver ? g_strdup (latest_updater_ver) : NULL; + agent->agent_version = agt_ver ? g_strdup (agt_ver) : NULL; agent->operating_system = os_str ? g_strdup (os_str) : NULL; agent->architecture = arch ? g_strdup (arch) : NULL; agent->update_to_latest = diff --git a/agent_controller/agent_controller.h b/agent_controller/agent_controller.h index d6fc3f57..dfb58d1c 100644 --- a/agent_controller/agent_controller.h +++ b/agent_controller/agent_controller.h @@ -137,6 +137,8 @@ struct agent_controller_agent gchar *updater_version; ///< Updater version string (may be empty) gchar *agent_version; ///< Agent version string (may be empty) + gchar *latest_agent_version; ///< Latest agent version string (may be empty) + gchar *latest_updater_version; ///< Latest updater version string (may be empty) gchar *operating_system; ///< OS string (may be empty) gchar *architecture; ///< Architecture string (e.g., "amd64", may be empty) diff --git a/agent_controller/agent_controller_tests.c b/agent_controller/agent_controller_tests.c index 422fa643..e83e94b4 100644 --- a/agent_controller/agent_controller_tests.c +++ b/agent_controller/agent_controller_tests.c @@ -565,6 +565,8 @@ Ensure (agent_controller, parse_agent_with_minimal_fields) "\"last_update\": \"2025-04-29T13:06:00.34994Z\"," "\"last_updater_heartbeat\": \"2025-04-29T13:06:00.34994Z\"," "\"ip_addresses\": [\"192.168.1.1\"]," + "\"latest_agent_version\": \"v.1.agent\"," + "\"latest_updater_version\": \"v.1.updater\"," "\"agent_update_available\": true," "\"updater_update_available\": true" "}"; @@ -583,6 +585,8 @@ Ensure (agent_controller, parse_agent_with_minimal_fields) assert_that (agent->last_updater_heartbeat, is_not_equal_to ((time_t) 0)); assert_that (agent->agent_update_available, is_equal_to (1)); assert_that (agent->updater_update_available, is_equal_to (1)); + assert_that (agent->latest_agent_version, is_equal_to_string ("v.1.agent")); + assert_that (agent->latest_updater_version, is_equal_to_string ("v.1.updater")); agent_controller_agent_free (agent); cJSON_Delete (obj); From d2eeaf287de0ff913b00f14f28411d90ab6e4575 Mon Sep 17 00:00:00 2001 From: ozgen Date: Mon, 2 Feb 2026 17:10:59 +0100 Subject: [PATCH 2/2] Fix formatting --- agent_controller/agent_controller.h | 11 ++++++----- agent_controller/agent_controller_tests.c | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/agent_controller/agent_controller.h b/agent_controller/agent_controller.h index dfb58d1c..e4ec730c 100644 --- a/agent_controller/agent_controller.h +++ b/agent_controller/agent_controller.h @@ -135,11 +135,12 @@ struct agent_controller_agent /// (seconds since epoch) agent_controller_scan_agent_config_t config; ///< agent scan config - gchar *updater_version; ///< Updater version string (may be empty) - gchar *agent_version; ///< Agent version string (may be empty) - gchar *latest_agent_version; ///< Latest agent version string (may be empty) - gchar *latest_updater_version; ///< Latest updater version string (may be empty) - gchar *operating_system; ///< OS string (may be empty) + gchar *updater_version; ///< Updater version string (may be empty) + gchar *agent_version; ///< Agent version string (may be empty) + gchar *latest_agent_version; ///< Latest agent version string (may be empty) + gchar + *latest_updater_version; ///< Latest updater version string (may be empty) + gchar *operating_system; ///< OS string (may be empty) gchar *architecture; ///< Architecture string (e.g., "amd64", may be empty) int update_to_latest; ///< 1: update to latest, 0: do not diff --git a/agent_controller/agent_controller_tests.c b/agent_controller/agent_controller_tests.c index e83e94b4..2f004b60 100644 --- a/agent_controller/agent_controller_tests.c +++ b/agent_controller/agent_controller_tests.c @@ -586,7 +586,8 @@ Ensure (agent_controller, parse_agent_with_minimal_fields) assert_that (agent->agent_update_available, is_equal_to (1)); assert_that (agent->updater_update_available, is_equal_to (1)); assert_that (agent->latest_agent_version, is_equal_to_string ("v.1.agent")); - assert_that (agent->latest_updater_version, is_equal_to_string ("v.1.updater")); + assert_that (agent->latest_updater_version, + is_equal_to_string ("v.1.updater")); agent_controller_agent_free (agent); cJSON_Delete (obj);