diff --git a/src/gmp.c b/src/gmp.c
index a39dd9908..5b27ee2e4 100644
--- a/src/gmp.c
+++ b/src/gmp.c
@@ -8093,9 +8093,9 @@ utf8_substring (const gchar *str, glong start_pos, glong end_pos)
/**
* @brief Buffer XML for a single note.
*
- * @param[in] buffer Buffer into which to buffer notes.
+ * @param[in] buffer Buffer into which to buffer note.
* @param[in] notes Notes iterator.
- * @param[in] include_notes_details Whether to include details of notes.
+ * @param[in] include_notes_details Whether to include details of note.
* @param[in] include_result Whether to include associated result.
* @param[out] count Number of notes.
*/
@@ -8389,308 +8389,324 @@ buffer_notes_xml (GString *buffer, iterator_t *notes, int include_notes_details,
}
/**
- * @brief Buffer XML for some overrides.
+ * @brief Buffer XML for a single override.
*
- * @param[in] buffer Buffer into which to buffer overrides.
+ * @param[in] buffer Buffer into which to buffer override.
* @param[in] overrides Overrides iterator.
- * @param[in] include_overrides_details Whether to include details of overrides.
+ * @param[in] include_overrides_details Whether to include details of override.
* @param[in] include_result Whether to include associated result.
* @param[out] count Number of overrides.
*/
static void
-buffer_overrides_xml (GString *buffer, iterator_t *overrides,
- int include_overrides_details, int include_result,
- int *count)
+buffer_override_xml (GString *buffer, iterator_t *overrides,
+ int include_overrides_details, int include_result,
+ int *count)
{
- while (next (overrides))
- {
- int tag_count;
- char *uuid_task, *uuid_result;
- tag_count = resource_tag_count ("override",
- get_iterator_resource (overrides),
- 1);
+ int tag_count;
+ char *uuid_task, *uuid_result;
+ tag_count = resource_tag_count ("override",
+ get_iterator_resource (overrides),
+ 1);
+
+ if (count)
+ (*count)++;
- if (count)
- (*count)++;
+ if (override_iterator_task (overrides))
+ task_uuid (override_iterator_task (overrides),
+ &uuid_task);
+ else
+ uuid_task = NULL;
- if (override_iterator_task (overrides))
- task_uuid (override_iterator_task (overrides),
- &uuid_task);
- else
- uuid_task = NULL;
+ if (override_iterator_result (overrides))
+ result_uuid (override_iterator_result (overrides),
+ &uuid_result);
+ else
+ uuid_result = NULL;
- if (override_iterator_result (overrides))
- result_uuid (override_iterator_result (overrides),
- &uuid_result);
- else
- uuid_result = NULL;
+ buffer_xml_append_printf (buffer,
+ ""
+ "",
+ get_iterator_uuid (overrides));
- buffer_xml_append_printf (buffer,
- ""
- "",
- get_iterator_uuid (overrides));
-
- if (/* The user is the owner. */
- (current_credentials.username
- && get_iterator_owner_name (overrides)
- && (strcmp (get_iterator_owner_name (overrides),
- current_credentials.username)
- == 0))
- /* Or the user is effectively the owner. */
- || acl_user_has_super (current_credentials.uuid,
- get_iterator_owner (overrides)))
+ if (/* The user is the owner. */
+ (current_credentials.username
+ && get_iterator_owner_name (overrides)
+ && (strcmp (get_iterator_owner_name (overrides),
+ current_credentials.username)
+ == 0))
+ /* Or the user is effectively the owner. */
+ || acl_user_has_super (current_credentials.uuid,
+ get_iterator_owner (overrides)))
+ buffer_xml_append_printf (buffer,
+ "Everything"
+ "");
+ else
+ {
+ iterator_t perms;
+ get_data_t perms_get;
+
+ memset (&perms_get, '\0', sizeof (perms_get));
+ perms_get.filter = g_strdup_printf ("resource_uuid=%s"
+ " owner=any"
+ " permission=any",
+ get_iterator_uuid (overrides));
+ init_permission_iterator (&perms, &perms_get);
+ g_free (perms_get.filter);
+ while (next (&perms))
buffer_xml_append_printf (buffer,
- "Everything"
- "");
- else
- {
- iterator_t perms;
- get_data_t perms_get;
-
- memset (&perms_get, '\0', sizeof (perms_get));
- perms_get.filter = g_strdup_printf ("resource_uuid=%s"
- " owner=any"
- " permission=any",
- get_iterator_uuid (overrides));
- init_permission_iterator (&perms, &perms_get);
- g_free (perms_get.filter);
- while (next (&perms))
- buffer_xml_append_printf (buffer,
- "%s",
- get_iterator_name (&perms));
- cleanup_iterator (&perms);
-
- buffer_xml_append_printf (buffer, "");
- }
+ "%s",
+ get_iterator_name (&perms));
+ cleanup_iterator (&perms);
- if (include_overrides_details == 0)
- {
- gchar *excerpt;
- const char *text;
+ buffer_xml_append_printf (buffer, "");
+ }
- text = override_iterator_text (overrides);
- excerpt = utf8_substring (text, 0, setting_excerpt_size_int ());
+ if (include_overrides_details == 0)
+ {
+ gchar *excerpt;
+ const char *text;
- /* This must match send_get_common. */
+ text = override_iterator_text (overrides);
+ excerpt = utf8_substring (text, 0, setting_excerpt_size_int ());
- buffer_xml_append_printf (buffer,
- "%s"
- ""
- "%s"
- "%s"
- "",
- get_iterator_owner_name (overrides)
- ? get_iterator_owner_name (overrides)
- : "",
- override_iterator_nvt_oid (overrides),
- override_iterator_nvt_name (overrides),
- override_iterator_nvt_type (overrides));
+ /* This must match send_get_common. */
- buffer_xml_append_printf (buffer,
- "%s",
- iso_if_time (get_iterator_creation_time (overrides)));
+ buffer_xml_append_printf (buffer,
+ "%s"
+ ""
+ "%s"
+ "%s"
+ "",
+ get_iterator_owner_name (overrides)
+ ? get_iterator_owner_name (overrides)
+ : "",
+ override_iterator_nvt_oid (overrides),
+ override_iterator_nvt_name (overrides),
+ override_iterator_nvt_type (overrides));
+
+ buffer_xml_append_printf (buffer,
+ "%s",
+ iso_if_time (get_iterator_creation_time (overrides)));
- buffer_xml_append_printf (buffer,
- "%s",
- iso_if_time (get_iterator_modification_time (overrides)));
+ buffer_xml_append_printf (buffer,
+ "%s",
+ iso_if_time (get_iterator_modification_time (overrides)));
+
+ buffer_xml_append_printf (buffer,
+ "1"
+ "0"
+ "%i"
+ "%s"
+ "%s"
+ "%s"
+ "%s"
+ "%s"
+ "%i",
+ override_iterator_active (overrides),
+ strlen (excerpt) < strlen (text),
+ excerpt,
+ override_iterator_threat (overrides)
+ ? override_iterator_threat (overrides)
+ : "",
+ override_iterator_severity (overrides)
+ ? override_iterator_severity (overrides)
+ : "",
+ override_iterator_new_threat (overrides),
+ override_iterator_new_severity (overrides),
+ ((override_iterator_task (overrides)
+ && (uuid_task == NULL))
+ || (override_iterator_result (overrides)
+ && (uuid_result == NULL))));
+ if (tag_count)
+ {
buffer_xml_append_printf (buffer,
- "1"
- "0"
- "%i"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%i",
- override_iterator_active (overrides),
- strlen (excerpt) < strlen (text),
- excerpt,
- override_iterator_threat (overrides)
- ? override_iterator_threat (overrides)
- : "",
- override_iterator_severity (overrides)
- ? override_iterator_severity (overrides)
- : "",
- override_iterator_new_threat (overrides),
- override_iterator_new_severity (overrides),
- ((override_iterator_task (overrides)
- && (uuid_task == NULL))
- || (override_iterator_result (overrides)
- && (uuid_result == NULL))));
-
- if (tag_count)
- {
- buffer_xml_append_printf (buffer,
- ""
- "%i"
- "",
- tag_count);
- }
+ ""
+ "%i"
+ "",
+ tag_count);
+ }
- g_string_append (buffer, "");
+ g_string_append (buffer, "");
+
+ g_free (excerpt);
+ }
+ else
+ {
+ char *name_task;
+ int trash_task;
+ time_t end_time;
+ iterator_t tags;
- g_free (excerpt);
+ if (uuid_task)
+ {
+ name_task = task_name (override_iterator_task (overrides));
+ trash_task = task_in_trash (override_iterator_task (overrides));
}
else
{
- char *name_task;
- int trash_task;
- time_t end_time;
- iterator_t tags;
+ name_task = NULL;
+ trash_task = 0;
+ }
- if (uuid_task)
- {
- name_task = task_name (override_iterator_task (overrides));
- trash_task = task_in_trash (override_iterator_task (overrides));
- }
- else
- {
- name_task = NULL;
- trash_task = 0;
- }
+ end_time = override_iterator_end_time (overrides);
- end_time = override_iterator_end_time (overrides);
+ /* This must match send_get_common. */
- /* This must match send_get_common. */
+ buffer_xml_append_printf
+ (buffer,
+ "%s"
+ ""
+ "%s"
+ "%s"
+ "",
+ get_iterator_owner_name (overrides)
+ ? get_iterator_owner_name (overrides)
+ : "",
+ override_iterator_nvt_oid (overrides),
+ override_iterator_nvt_name (overrides),
+ override_iterator_nvt_type (overrides));
- buffer_xml_append_printf
- (buffer,
- "%s"
- ""
- "%s"
- "%s"
- "",
- get_iterator_owner_name (overrides)
- ? get_iterator_owner_name (overrides)
- : "",
- override_iterator_nvt_oid (overrides),
- override_iterator_nvt_name (overrides),
- override_iterator_nvt_type (overrides));
+ buffer_xml_append_printf
+ (buffer,
+ "%s",
+ iso_if_time (get_iterator_creation_time (overrides)));
- buffer_xml_append_printf
- (buffer,
- "%s",
- iso_if_time (get_iterator_creation_time (overrides)));
+ buffer_xml_append_printf
+ (buffer,
+ "%s",
+ iso_if_time (get_iterator_modification_time (overrides)));
- buffer_xml_append_printf
- (buffer,
- "%s",
- iso_if_time (get_iterator_modification_time (overrides)));
+ buffer_xml_append_printf
+ (buffer,
+ "1"
+ "0"
+ "%i"
+ "%s"
+ "%s"
+ "%s"
+ "%s"
+ "%s"
+ "%s"
+ "%s"
+ "%s"
+ "%s%i"
+ "%i",
+ override_iterator_active (overrides),
+ end_time > 1 ? iso_time (&end_time) : "",
+ override_iterator_text (overrides),
+ override_iterator_hosts (overrides)
+ ? override_iterator_hosts (overrides) : "",
+ override_iterator_port (overrides)
+ ? override_iterator_port (overrides) : "",
+ override_iterator_threat (overrides)
+ ? override_iterator_threat (overrides) : "",
+ override_iterator_severity (overrides)
+ ? override_iterator_severity (overrides) : "",
+ override_iterator_new_threat (overrides),
+ override_iterator_new_severity (overrides),
+ uuid_task ? uuid_task : "",
+ name_task ? name_task : "",
+ trash_task,
+ ((override_iterator_task (overrides) && (uuid_task == NULL))
+ || (override_iterator_result (overrides) && (uuid_result == NULL))));
- buffer_xml_append_printf
- (buffer,
- "1"
- "0"
- "%i"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s%i"
- "%i",
- override_iterator_active (overrides),
- end_time > 1 ? iso_time (&end_time) : "",
- override_iterator_text (overrides),
- override_iterator_hosts (overrides)
- ? override_iterator_hosts (overrides) : "",
- override_iterator_port (overrides)
- ? override_iterator_port (overrides) : "",
- override_iterator_threat (overrides)
- ? override_iterator_threat (overrides) : "",
- override_iterator_severity (overrides)
- ? override_iterator_severity (overrides) : "",
- override_iterator_new_threat (overrides),
- override_iterator_new_severity (overrides),
- uuid_task ? uuid_task : "",
- name_task ? name_task : "",
- trash_task,
- ((override_iterator_task (overrides) && (uuid_task == NULL))
- || (override_iterator_result (overrides) && (uuid_result == NULL))));
-
- free (name_task);
-
- if (include_result && uuid_result
- && override_iterator_result (overrides))
- {
- iterator_t results;
- get_data_t *result_get;
- result_get = report_results_get_data (1, 1,
- 1, /* apply_overrides */
- 0 /* min_qod */);
- result_get->id = g_strdup (uuid_result);
- init_result_get_iterator (&results, result_get,
- 0, /* No report restriction */
- NULL, /* No host restriction */
- NULL); /* No extra order SQL. */
- get_data_reset (result_get);
- free (result_get);
-
- while (next (&results))
- buffer_results_xml (buffer,
- &results,
- 0,
- 0, /* Overrides. */
- 0, /* Override details. */
- 0, /* Overrides. */
- 0, /* Override details. */
- 0, /* Tags. */
- 0, /* Tag details. */
- 0, /* Result details. */
- NULL,
- NULL,
- 0,
- -1,
- 0, /* Lean. */
- 0); /* Delta fields. */
- cleanup_iterator (&results);
- }
- else
- buffer_xml_append_printf (buffer,
- "",
- uuid_result ? uuid_result : "");
+ free (name_task);
- if (tag_count)
- {
- buffer_xml_append_printf (buffer,
- ""
- "%i",
- tag_count);
+ if (include_result && uuid_result
+ && override_iterator_result (overrides))
+ {
+ iterator_t results;
+ get_data_t *result_get;
+ result_get = report_results_get_data (1, 1,
+ 1, /* apply_overrides */
+ 0 /* min_qod */);
+ result_get->id = g_strdup (uuid_result);
+ init_result_get_iterator (&results, result_get,
+ 0, /* No report restriction */
+ NULL, /* No host restriction */
+ NULL); /* No extra order SQL. */
+ get_data_reset (result_get);
+ free (result_get);
- init_resource_tag_iterator (&tags, "override",
- get_iterator_resource (overrides),
- 1, NULL, 1);
+ while (next (&results))
+ buffer_results_xml (buffer,
+ &results,
+ 0,
+ 0, /* Overrides. */
+ 0, /* Override details. */
+ 0, /* Overrides. */
+ 0, /* Override details. */
+ 0, /* Tags. */
+ 0, /* Tag details. */
+ 0, /* Result details. */
+ NULL,
+ NULL,
+ 0,
+ -1,
+ 0, /* Lean. */
+ 0); /* Delta fields. */
+ cleanup_iterator (&results);
+ }
+ else
+ buffer_xml_append_printf (buffer,
+ "",
+ uuid_result ? uuid_result : "");
- while (next (&tags))
- {
- buffer_xml_append_printf
- (buffer,
- ""
- "%s"
- "%s"
- "%s"
- "",
- resource_tag_iterator_uuid (&tags),
- resource_tag_iterator_name (&tags),
- resource_tag_iterator_value (&tags),
- resource_tag_iterator_comment (&tags));
- }
+ if (tag_count)
+ {
+ buffer_xml_append_printf (buffer,
+ ""
+ "%i",
+ tag_count);
- cleanup_iterator (&tags);
+ init_resource_tag_iterator (&tags, "override",
+ get_iterator_resource (overrides),
+ 1, NULL, 1);
- g_string_append (buffer, "");
+ while (next (&tags))
+ {
+ buffer_xml_append_printf
+ (buffer,
+ ""
+ "%s"
+ "%s"
+ "%s"
+ "",
+ resource_tag_iterator_uuid (&tags),
+ resource_tag_iterator_name (&tags),
+ resource_tag_iterator_value (&tags),
+ resource_tag_iterator_comment (&tags));
}
- g_string_append (buffer, "");
+ cleanup_iterator (&tags);
+
+ g_string_append (buffer, "");
}
- free (uuid_task);
- free (uuid_result);
+
+ g_string_append (buffer, "");
}
+ free (uuid_task);
+ free (uuid_result);
+}
+
+/**
+ * @brief Buffer XML for some overrides.
+ *
+ * @param[in] buffer Buffer into which to buffer overrides.
+ * @param[in] overrides Overrides iterator.
+ * @param[in] include_overrides_details Whether to include details of overrides.
+ * @param[in] include_result Whether to include associated result.
+ * @param[out] count Number of overrides.
+ */
+static void
+buffer_overrides_xml (GString *buffer, iterator_t *overrides,
+ int include_overrides_details, int include_result,
+ int *count)
+{
+ while (next (overrides))
+ buffer_override_xml (buffer, overrides, include_overrides_details,
+ include_result, count);
}
/* External for manage.c. */