[Openvas-commits] r7878 - in trunk/openvas-manager: . src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Tue Jun 1 15:32:24 CEST 2010


Author: mattm
Date: 2010-06-01 15:32:22 +0200 (Tue, 01 Jun 2010)
New Revision: 7878

Modified:
   trunk/openvas-manager/ChangeLog
   trunk/openvas-manager/src/omp.c
Log:
	Switch GET_AGENTS to the new callback data mechanism.

	* src/omp.c (get_agents_data_t): New type.
	(get_agents_data_reset): New function.
	(command_data_t): Add get_agents.
	(get_agents_data): New variable.
	(omp_xml_handle_start_element, omp_xml_handle_end_element): Make
	GET_AGENTS cases use command_data.

Modified: trunk/openvas-manager/ChangeLog
===================================================================
--- trunk/openvas-manager/ChangeLog	2010-06-01 13:13:07 UTC (rev 7877)
+++ trunk/openvas-manager/ChangeLog	2010-06-01 13:32:22 UTC (rev 7878)
@@ -1,5 +1,16 @@
 2010-06-01  Matthew Mundell <matthew.mundell at greenbone.net>
 
+	Switch GET_AGENTS to the new callback data mechanism.
+
+	* src/omp.c (get_agents_data_t): New type.
+	(get_agents_data_reset): New function.
+	(command_data_t): Add get_agents.
+	(get_agents_data): New variable.
+	(omp_xml_handle_start_element, omp_xml_handle_end_element): Make
+	GET_AGENTS cases use command_data.
+
+2010-06-01  Matthew Mundell <matthew.mundell at greenbone.net>
+
 	* src/omp.c (print_report_xml, omp_xml_handle_end_element): Initialize
 	result_hosts always, to quiet a compiler warning.
 

Modified: trunk/openvas-manager/src/omp.c
===================================================================
--- trunk/openvas-manager/src/omp.c	2010-06-01 13:13:07 UTC (rev 7877)
+++ trunk/openvas-manager/src/omp.c	2010-06-01 13:32:22 UTC (rev 7878)
@@ -919,6 +919,23 @@
 
 typedef struct
 {
+  char *format;
+  char *name;
+  char *sort_field;
+  int sort_order;
+} get_agents_data_t;
+
+static void
+get_agents_data_reset (get_agents_data_t *data)
+{
+  free (data->format);
+  free (data->name);
+  free (data->sort_field);
+  memset (data, 0, sizeof (get_agents_data_t));
+}
+
+typedef struct
+{
   char *note_id;
   char *nvt_oid;
   char *task_id;
@@ -1217,6 +1234,7 @@
   delete_schedule_data_t delete_schedule;
   delete_target_data_t delete_target;
   delete_task_data_t delete_task;
+  get_agents_data_t get_agents;
   get_notes_data_t get_notes;
   get_preferences_data_t get_preferences;
   get_report_data_t get_report;
@@ -1360,6 +1378,12 @@
  = (delete_task_data_t*) &(command_data.delete_task);
 
 /**
+ * @brief Parser callback data for GET_AGENTS.
+ */
+get_agents_data_t *get_agents_data
+ = &(command_data.get_agents);
+
+/**
  * @brief Parser callback data for GET_NOTES.
  */
 get_notes_data_t *get_notes_data
@@ -2301,18 +2325,18 @@
             const gchar* attribute;
             if (find_attribute (attribute_names, attribute_values,
                                 "name", &attribute))
-              openvas_append_string (&current_uuid, attribute);
+              openvas_append_string (&get_agents_data->name, attribute);
             if (find_attribute (attribute_names, attribute_values,
                                 "format", &attribute))
-              openvas_append_string (&current_format, attribute);
+              openvas_append_string (&get_agents_data->format, attribute);
             if (find_attribute (attribute_names, attribute_values,
                                 "sort_field", &attribute))
-              openvas_append_string (&current_name, attribute);
+              openvas_append_string (&get_agents_data->sort_field, attribute);
             if (find_attribute (attribute_names, attribute_values,
                                 "sort_order", &attribute))
-              current_int_2 = strcmp (attribute, "descending");
+              get_agents_data->sort_order = strcmp (attribute, "descending");
             else
-              current_int_2 = 1;
+              get_agents_data->sort_order = 1;
             set_client_state (CLIENT_GET_AGENTS);
           }
         else if (strcasecmp ("GET_CERTIFICATES", element_name) == 0)
@@ -11294,22 +11318,24 @@
 
           assert (strcasecmp ("GET_AGENTS", element_name) == 0);
 
-          if (current_format)
+          if (get_agents_data->format)
             {
-              if (strlen (current_format))
+              if (strlen (get_agents_data->format))
                 {
-                  if (strcasecmp (current_format, "installer") == 0)
+                  if (strcasecmp (get_agents_data->format, "installer") == 0)
                     format = 1;
-                  else if (strcasecmp (current_format, "howto_install") == 0)
+                  else if (strcasecmp (get_agents_data->format,
+                                       "howto_install")
+                           == 0)
                     format = 2;
-                  else if (strcasecmp (current_format, "howto_use") == 0)
+                  else if (strcasecmp (get_agents_data->format, "howto_use")
+                           == 0)
                     format = 3;
                   else
                     format = -1;
                 }
               else
                 format = 0;
-              openvas_free_string_var (&current_format);
             }
           else
             format = 0;
@@ -11318,13 +11344,14 @@
              (XML_ERROR_SYNTAX ("get_agents",
                                 "GET_AGENTS format attribute should"
                                 " be \"installer\", \"howto_install\" or \"howto_use\"."));
-          else if (current_uuid && find_agent (current_uuid, &agent))
+          else if (get_agents_data->name
+                   && find_agent (get_agents_data->name, &agent))
             SEND_TO_CLIENT_OR_FAIL (XML_INTERNAL_ERROR ("get_agents"));
-          else if (current_uuid && agent == 0)
+          else if (get_agents_data->name && agent == 0)
             {
               if (send_find_error_to_client ("get_agents",
                                              "agent",
-                                             current_uuid))
+                                             get_agents_data->name))
                 {
                   error_send_to_client (error);
                   return;
@@ -11337,10 +11364,8 @@
                                       " status_text=\"" STATUS_OK_TEXT "\">");
               init_agent_iterator (&targets,
                                    agent,
-                                   /* Attribute sort_order. */
-                                   current_int_2,
-                                   /* Attribute sort_field. */
-                                   current_name);
+                                   get_agents_data->sort_order,
+                                   get_agents_data->sort_field);
               while (next (&targets))
                 {
                   switch (format)
@@ -11396,7 +11421,7 @@
               cleanup_iterator (&targets);
               SEND_TO_CLIENT_OR_FAIL ("</get_agents_response>");
             }
-          openvas_free_string_var (&current_name);
+          get_agents_data_reset (get_agents_data);
           set_client_state (CLIENT_AUTHENTIC);
           break;
         }



More information about the Openvas-commits mailing list