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

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Tue Feb 2 19:30:06 CET 2010


Author: mattm
Date: 2010-02-02 19:30:03 +0100 (Tue, 02 Feb 2010)
New Revision: 6617

Modified:
   trunk/openvas-manager/ChangeLog
   trunk/openvas-manager/src/manage.c
   trunk/openvas-manager/src/manage.h
   trunk/openvas-manager/src/omp.c
   trunk/openvas-manager/src/tasks_sql.h
Log:
	* src/tasks_sql.h (set_target_hosts, target_hosts)
	(target_lsc_credential, set_target_hosts): Take target_t instead of name.
	(task_target): Return target_t instead of name.
	(make_task_rcfile): Work with target_t instead of name.
	(target_name): New function.

	* src/manage.h: Update headers accordingly.

	* src/manage.c (start_task): Work with target_t instead of name.

	* src/omp.c (omp_xml_handle_end_element): In CLIENT_CREATE_TASK and
	CLIENT_GET_STATUS work with target_t instead of target name.

Modified: trunk/openvas-manager/ChangeLog
===================================================================
--- trunk/openvas-manager/ChangeLog	2010-02-02 17:27:15 UTC (rev 6616)
+++ trunk/openvas-manager/ChangeLog	2010-02-02 18:30:03 UTC (rev 6617)
@@ -1,5 +1,20 @@
 2010-02-02  Matthew Mundell <matthew.mundell at intevation.de>
 
+	* src/tasks_sql.h (set_target_hosts, target_hosts)
+	(target_lsc_credential, set_target_hosts): Take target_t instead of name.
+	(task_target): Return target_t instead of name.
+	(make_task_rcfile): Work with target_t instead of name.
+	(target_name): New function.
+
+	* src/manage.h: Update headers accordingly.
+
+	* src/manage.c (start_task): Work with target_t instead of name.
+
+	* src/omp.c (omp_xml_handle_end_element): In CLIENT_CREATE_TASK and
+	CLIENT_GET_STATUS work with target_t instead of target name.
+
+2010-02-02  Matthew Mundell <matthew.mundell at intevation.de>
+
 	* src/tasks_sql.h (serve_omp): Convert scanner input to UTF-8 before
 	logging.
 

Modified: trunk/openvas-manager/src/manage.c
===================================================================
--- trunk/openvas-manager/src/manage.c	2010-02-02 17:27:15 UTC (rev 6616)
+++ trunk/openvas-manager/src/manage.c	2010-02-02 18:30:03 UTC (rev 6617)
@@ -902,7 +902,8 @@
 int
 start_task (task_t task, char **report_id)
 {
-  char *hosts, *target, *config;
+  target_t target;
+  char *hosts, *config;
   gchar *plugins;
   int fail, pid;
   GSList *files = NULL;
@@ -937,9 +938,9 @@
     }
 
   target = task_target (task);
-  if (target == NULL)
+  if (target == 0)
     {
-      tracef ("   task target is NULL.\n");
+      tracef ("   task target is 0.\n");
       set_task_run_status (task, run_status);
       return -2;
     }
@@ -947,14 +948,12 @@
   hosts = target_hosts (target);
   if (hosts == NULL)
     {
-      free (target);
       tracef ("   target hosts is NULL.\n");
       set_task_run_status (task, run_status);
       return -4;
     }
 
   credential = target_lsc_credential (target);
-  free (target);
 
   /* Create the report. */
 

Modified: trunk/openvas-manager/src/manage.h
===================================================================
--- trunk/openvas-manager/src/manage.h	2010-02-02 17:27:15 UTC (rev 6616)
+++ trunk/openvas-manager/src/manage.h	2010-02-02 18:30:03 UTC (rev 6617)
@@ -376,7 +376,7 @@
 void
 set_task_config (task_t, const char*);
 
-char*
+target_t
 task_target (task_t);
 
 void
@@ -727,8 +727,11 @@
 target_iterator_lsc_credential (iterator_t*);
 
 char*
-target_hosts (const char*);
+target_name (target_t);
 
+char*
+target_hosts (target_t);
+
 int
 target_in_use (target_t);
 

Modified: trunk/openvas-manager/src/omp.c
===================================================================
--- trunk/openvas-manager/src/omp.c	2010-02-02 17:27:15 UTC (rev 6616)
+++ trunk/openvas-manager/src/omp.c	2010-02-02 18:30:03 UTC (rev 6617)
@@ -6920,7 +6920,8 @@
         {
           gchar* msg;
           config_t config;
-          char *tsk_uuid, *name, *description, *target;
+          target_t target;
+          char *tsk_uuid, *name, *description;
 
           assert (strcasecmp ("CREATE_TASK", element_name) == 0);
           assert (current_client_task != (task_t) 0);
@@ -6953,15 +6954,13 @@
 
           description = task_description (current_client_task);
           config = task_config (current_client_task);
-          /** @todo Hence task_target_name? */
           target = task_target (current_client_task);
           if ((description && (config || target))
               || (description == NULL
-                  && (config == 0 || target == NULL)))
+                  && (config == 0 || target == 0)))
             {
               request_delete_task (&current_client_task);
               free (tsk_uuid);
-              free (target);
               SEND_TO_CLIENT_OR_FAIL
                (XML_ERROR_SYNTAX ("create_task",
                                   "CREATE_TASK requires either an rcfile"
@@ -7003,7 +7002,6 @@
               request_delete_task (&current_client_task);
               free (tsk_uuid);
               free (description);
-              free (target);
               SEND_TO_CLIENT_OR_FAIL
                (XML_ERROR_SYNTAX ("create_task",
                                   "CREATE_TASK requires a name attribute"));
@@ -7078,7 +7076,6 @@
                 {
                   request_delete_task (&current_client_task);
                   free (tsk_uuid);
-                  free (target);
                   SEND_TO_CLIENT_OR_FAIL
                    (XML_ERROR_SYNTAX ("create_task",
                                       "CREATE_TASK target must exist"));
@@ -7090,7 +7087,6 @@
                 {
                   request_delete_task (&current_client_task);
                   free (tsk_uuid);
-                  free (target);
                   SEND_TO_CLIENT_OR_FAIL
                    (XML_ERROR_SYNTAX ("create_task",
                                       "CREATE_TASK config must exist"));
@@ -7105,7 +7101,6 @@
                 {
                   request_delete_task (&current_client_task);
                   free (tsk_uuid);
-                  free (target);
                   SEND_TO_CLIENT_OR_FAIL
                    (XML_ERROR_SYNTAX ("create_task",
                                       "Failed to generate task rcfile"));
@@ -7367,7 +7362,8 @@
                   {
                     int ret, maximum_hosts;
                     gchar *response, *progress_xml;
-                    char *name, *config, *escalator, *target, *hosts;
+                    target_t target;
+                    char *name, *config, *escalator, *task_target_name, *hosts;
                     gchar *first_report_id, *first_report;
                     char* description;
                     gchar *description64, *last_report_id, *last_report;
@@ -7590,6 +7586,7 @@
                     name = task_name (task);
                     escalator = task_escalator (task);
                     config = task_config_name (task);
+                    task_target_name = target_name (target);
                     response = g_strdup_printf
                                 ("<get_status_response"
                                  " status=\"" STATUS_OK "\""
@@ -7617,7 +7614,7 @@
                                  name,
                                  config ? config : "",
                                  escalator ? escalator : "",
-                                 target ? target : "",
+                                 task_target_name ? task_target_name : "",
                                  task_run_status_name (task),
                                  progress_xml,
                                  description64,
@@ -7633,7 +7630,7 @@
                                  second_last_report);
                     free (config);
                     free (escalator);
-                    free (target);
+                    free (task_target_name);
                     g_free (progress_xml);
                     g_free (last_report);
                     g_free (second_last_report);
@@ -7697,7 +7694,8 @@
               {
                 gchar *line, *progress_xml;
                 char *name = task_name (index);
-                char *tsk_uuid, *config, *escalator, *target, *hosts;
+                target_t target;
+                char *tsk_uuid, *config, *escalator, *task_target_name, *hosts;
                 gchar *first_report_id, *first_report;
                 char *description;
                 gchar *description64, *last_report_id, *last_report;
@@ -7917,6 +7915,7 @@
 
                 config = task_config_name (index);
                 escalator = task_escalator (index);
+                task_target_name = target_name (target);
                 line = g_strdup_printf ("<task"
                                         " id=\"%s\">"
                                         "<name>%s</name>"
@@ -7942,7 +7941,7 @@
                                         name,
                                         config ? config : "",
                                         escalator ? escalator : "",
-                                        target ? target : "",
+                                        task_target_name ? task_target_name : "",
                                         task_run_status_name (index),
                                         progress_xml,
                                         description64,
@@ -7958,7 +7957,7 @@
                                         second_last_report);
                 free (config);
                 free (escalator);
-                free (target);
+                free (task_target_name);
                 g_free (progress_xml);
                 g_free (last_report);
                 g_free (second_last_report);

Modified: trunk/openvas-manager/src/tasks_sql.h
===================================================================
--- trunk/openvas-manager/src/tasks_sql.h	2010-02-02 17:27:15 UTC (rev 6616)
+++ trunk/openvas-manager/src/tasks_sql.h	2010-02-02 18:30:03 UTC (rev 6617)
@@ -91,7 +91,7 @@
 update_all_config_caches ();
 
 static void
-set_target_hosts (const char *, const char *);
+set_target_hosts (target_t, const char *);
 
 static gchar*
 select_config_nvts (config_t, const char*, int, const char*);
@@ -4115,12 +4115,25 @@
  *
  * @return Target of task.
  */
-char*
+target_t
 task_target (task_t task)
 {
-  return sql_string (0, 0,
-                     "SELECT target FROM tasks WHERE ROWID = %llu;",
-                     task);
+  target_t target = 0;
+  switch (sql_int64 (&target, 0, 0,
+                     "SELECT ROWID FROM targets WHERE name ="
+                     " (SELECT target FROM tasks WHERE ROWID = %llu);",
+                     task))
+    {
+      case 0:
+        return target;
+        break;
+      case 1:        /* Too few rows in result of query. */
+      default:       /* Programming error. */
+        assert (0);
+      case -1:
+        return 0;
+        break;
+    }
 }
 
 /**
@@ -4431,7 +4444,8 @@
 int
 make_task_rcfile (task_t task)
 {
-  char *config, *target, *selector, *hosts, *rc;
+  target_t target;
+  char *config, *selector, *hosts, *rc;
   iterator_t prefs;
   GString *buffer;
 
@@ -4439,7 +4453,7 @@
   if (config == NULL) return -1;
 
   target = task_target (task);
-  if (target == NULL)
+  if (target == 0)
     {
       free (config);
       return -1;
@@ -4449,7 +4463,6 @@
   if (selector == NULL)
     {
       free (config);
-      free (target);
       return -1;
     }
 
@@ -4471,7 +4484,6 @@
   /* Targets for general preferences. */
 
   hosts = target_hosts (target);
-  free (target);
   if (hosts)
     g_string_append_printf (buffer, "targets = %s\n\n", hosts);
   else
@@ -5811,7 +5823,8 @@
 
       {
         config_t config;
-        char *config_name, *target, *selector;
+        target_t target;
+        char *config_name, *selector;
         char *quoted_config_name, *quoted_selector;
 
         config_name = task_config_name (task);
@@ -5823,7 +5836,7 @@
           }
 
         target = task_target (task);
-        if (target == NULL)
+        if (target == 0)
           {
             free (config_name);
             g_free (rc);
@@ -5835,7 +5848,6 @@
         if (selector == NULL)
           {
             free (config_name);
-            free (target);
             g_free (rc);
             sql ("ROLLBACK");
             return -1;
@@ -5847,7 +5859,6 @@
           {
             free (quoted_selector);
             free (config_name);
-            free (target);
             g_free (rc);
             sql ("ROLLBACK");
             return -1;
@@ -5856,7 +5867,6 @@
           {
             free (quoted_selector);
             free (config_name);
-            free (target);
             g_free (rc);
             sql ("ROLLBACK");
             return -1;
@@ -6536,27 +6546,34 @@
 }
 
 /**
+ * @brief Return the name of a target.
+ *
+ * @param[in]  target  Target.
+ *
+ * @return Newly allocated name if available, else NULL.
+ */
+char*
+target_name (target_t target)
+{
+  return sql_string (0, 0,
+                     "SELECT name FROM targets WHERE ROWID = %llu;",
+                     target);
+}
+
+/**
  * @brief Return the hosts associated with a target.
  *
- * @param[in]  name  Target name.
+ * @param[in]  target  Target.
  *
- * @return Comma separated list of hosts if available, else NULL.
+ * @return Newly allocated comma separated list of hosts if available,
+ *         else NULL.
  */
 char*
-target_hosts (const char *name)
+target_hosts (target_t target)
 {
-  char* hosts;
-  gchar* quoted_name = sql_nquote (name, strlen (name));
-  if (user_owns ("target", quoted_name) == 0)
-    {
-      g_free (quoted_name);
-      return NULL;
-    }
-  hosts = sql_string (0, 0,
-                      "SELECT hosts FROM targets WHERE name = '%s';",
-                      quoted_name);
-  g_free (quoted_name);
-  return hosts;
+  return sql_string (0, 0,
+                     "SELECT hosts FROM targets WHERE ROWID = %llu;",
+                     target);
 }
 
 /**
@@ -6567,25 +6584,15 @@
  * @return Credential if any, else 0.
  */
 static lsc_credential_t
-target_lsc_credential (const char *name)
+target_lsc_credential (target_t target)
 {
-  int ret;
   lsc_credential_t lsc_credential;
-  gchar *quoted_name = sql_quote (name);
 
-  if (user_owns ("target", quoted_name) == 0)
+  switch (sql_int64 (&lsc_credential, 0, 0,
+                     "SELECT lsc_credential FROM targets"
+                     " WHERE ROWID = %llu;",
+                     target))
     {
-      g_free (quoted_name);
-      return 0;
-    }
-
-  ret = sql_int64 (&lsc_credential, 0, 0,
-                   "SELECT lsc_credential FROM targets"
-                   " WHERE name = '%s';",
-                   quoted_name);
-  g_free (quoted_name);
-  switch (ret)
-    {
       case 0:
         break;
       case 1:        /* Too few rows in result of query. */
@@ -6604,18 +6611,20 @@
 /**
  * @brief Set the hosts associated with a target.
  *
- * @param[in]  name  Target name.
- * @param[in]  name  New value for hosts.
+ * @param[in]  target  Target.
+ * @param[in]  hosts   New value for hosts.
  */
 static void
-set_target_hosts (const char *name, const char *hosts)
+set_target_hosts (target_t target, const char *hosts)
 {
-  gchar* quoted_name = sql_quote (name);
-  gchar* quoted_hosts = sql_quote (hosts);
-  sql ("UPDATE targets SET hosts = '%s' WHERE name = '%s';",
-       quoted_hosts, quoted_name);
+  gchar* quoted_hosts;
+
+  assert (hosts);
+
+  quoted_hosts = sql_quote (hosts);
+  sql ("UPDATE targets SET hosts = '%s' WHERE ROWID = %llu;",
+       quoted_hosts, target);
   g_free (quoted_hosts);
-  g_free (quoted_name);
 }
 
 /**



More information about the Openvas-commits mailing list