[Openvas-commits] r7980 - in trunk/gsa: . src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Jun 9 14:59:02 CEST 2010


Author: felix
Date: 2010-06-09 14:59:00 +0200 (Wed, 09 Jun 2010)
New Revision: 7980

Modified:
   trunk/gsa/ChangeLog
   trunk/gsa/src/gsad.c
Log:
* src/gsad.c (validate): New function that validates a parameter from
the request. If parameter was found invalid, free it and set the
corresponding variable to NULL.
(exec_omp_post): Replaced code with call to validate.


Modified: trunk/gsa/ChangeLog
===================================================================
--- trunk/gsa/ChangeLog	2010-06-09 10:53:03 UTC (rev 7979)
+++ trunk/gsa/ChangeLog	2010-06-09 12:59:00 UTC (rev 7980)
@@ -1,3 +1,10 @@
+2010-06-09  Felix Wolfsteller <felix.wolfsteller at greenbone.net>
+
+	* src/gsad.c (validate): New function that validates a parameter from
+	the request. If parameter was found invalid, free it and set the
+	corresponding variable to NULL.
+	(exec_omp_post): Replaced code with call to validate.
+
 2010-06-09  Matthew Mundell <matthew.mundell at greenbone.net>
 
 	* src/gsad_omp.c (create_task_omp): Pass schedule ID in attribute.

Modified: trunk/gsa/src/gsad.c
===================================================================
--- trunk/gsa/src/gsad.c	2010-06-09 10:53:03 UTC (rev 7979)
+++ trunk/gsa/src/gsad.c	2010-06-09 12:59:00 UTC (rev 7980)
@@ -337,7 +337,33 @@
   openvas_validator_alias (validator, "period_unit",  "calendar_unit");
 }
 
+/**
+ * @brief Checks whether an input string is valid according to a rule
+ * @brief registered with \ref validator. Frees and NULLs \ref string if not.
+ *
+ * @param[in]      validator       Validator to use.
+ * @param[in]      validator_rule  The rule with which to validate
+ *                                 \ref string.
+ * @param[in,out]  string          The string to validate. If invalid, memory
+ *                                 location pointed to  will be freed and set
+ *                                 to NULL.
+ *
+ * @return TRUE if \ref input was invalid and was freed, FALSE otherwise.
+ */
+static gboolean
+validate (validator_t validator, const gchar* validator_rule, char** string)
+{
+  if (openvas_validate (validator, validator_rule, *string))
+    {
+      free (*string);
+      *string = NULL;
+      return TRUE;
+    }
 
+  return FALSE;
+}
+
+
 /**
  * @brief Returns TRUE no netmask in CIDR notation < 20 is given.
  *
@@ -809,6 +835,7 @@
 
       g_array_free (con_info->req_parms.passwords, TRUE);
     }
+  // Free gchar* arrays.
   if (con_info->req_parms.nvts)
     {
       gchar *item;
@@ -1521,16 +1548,8 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_agent"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "comment", con_info->req_parms.comment))
-        {
-          free (con_info->req_parms.comment);
-          con_info->req_parms.comment = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "comment", &con_info->req_parms.comment);
       con_info->response =
         create_agent_omp (credentials,
                           con_info->req_parms.name,
@@ -1544,33 +1563,12 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_escalator"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "comment", con_info->req_parms.comment))
-        {
-          free (con_info->req_parms.comment);
-          con_info->req_parms.comment = NULL;
-        }
-      if (openvas_validate (validator,
-                            "condition",
-                            con_info->req_parms.condition))
-        {
-          free (con_info->req_parms.condition);
-          con_info->req_parms.condition = NULL;
-        }
-      if (openvas_validate (validator, "event", con_info->req_parms.event))
-        {
-          free (con_info->req_parms.event);
-          con_info->req_parms.event = NULL;
-        }
-      if (openvas_validate (validator, "method", con_info->req_parms.method))
-        {
-          free (con_info->req_parms.method);
-          con_info->req_parms.method = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "comment", &con_info->req_parms.comment);
+      validate (validator, "condition", &con_info->req_parms.condition);
+      validate (validator, "event", &con_info->req_parms.event);
+      if (validate (validator, "method", &con_info->req_parms.method))
+        ;
       else if (strcasecmp (con_info->req_parms.method, "Email") == 0)
         {
           char *to_address;
@@ -1605,37 +1603,21 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_lsc_credential"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "comment", con_info->req_parms.comment))
-        {
-          free (con_info->req_parms.comment);
-          con_info->req_parms.comment = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "comment", &con_info->req_parms.comment);
       if (openvas_validate (validator,
                             "credential_login",
                             con_info->req_parms.credential_login))
         {
+          /** @todo Maybe resolve discord between rule and params
+           *  (con_info->req_parms.credential_login vs
+           *  con_info->req_parms.name) */
           free (con_info->req_parms.name);
           con_info->req_parms.name = NULL;
         }
-      if (openvas_validate (validator,
-                            "lsc_password",
-                            con_info->req_parms.password))
-        {
-          free (con_info->req_parms.password);
-          con_info->req_parms.password = NULL;
-        }
-      if (openvas_validate (validator,
-                            "create_credentials_type",
-                            con_info->req_parms.base))
-        {
-          free (con_info->req_parms.base);
-          con_info->req_parms.base = NULL;
-        }
+      validate (validator, "lsc_password", &con_info->req_parms.password);
+      validate (validator, "create_credentials_type",
+                &con_info->req_parms.base);
       con_info->response =
         create_lsc_credential_omp (credentials,
                                    con_info->req_parms.name,
@@ -1646,16 +1628,8 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_task"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "comment", con_info->req_parms.comment))
-        {
-          free (con_info->req_parms.comment);
-          con_info->req_parms.comment = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "comment", &con_info->req_parms.comment);
       if (con_info->req_parms.escalator_id
           && strcmp (con_info->req_parms.escalator_id, "--")
           && openvas_validate (validator,
@@ -1674,13 +1648,7 @@
           free (con_info->req_parms.target_id);
           con_info->req_parms.target_id  = NULL;
         }
-      if (openvas_validate (validator,
-                            "scanconfig",
-                            con_info->req_parms.scanconfig))
-        {
-          free (con_info->req_parms.scanconfig);
-          con_info->req_parms.scanconfig  = NULL;
-        }
+      validate (validator, "scanconfig", &con_info->req_parms.scanconfig);
       if (con_info->req_parms.schedule_id
           && strcmp (con_info->req_parms.schedule_id, "--")
           && openvas_validate (validator,
@@ -1708,11 +1676,7 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_user"))
     {
-      if (openvas_validate (validator, "login", con_info->req_parms.login))
-        {
-          free (con_info->req_parms.login);
-          con_info->req_parms.login = NULL;
-        }
+      validate (validator, "login", &con_info->req_parms.login);
       if (openvas_validate (validator,
                             "password",
                             con_info->req_parms.password))
@@ -1720,25 +1684,9 @@
           /** @todo Free con_info->req_parms.password? */
           con_info->req_parms.password = NULL;
         }
-      if (openvas_validate (validator, "role", con_info->req_parms.role))
-        {
-          free (con_info->req_parms.role);
-          con_info->req_parms.role = NULL;
-        }
-      if (openvas_validate (validator,
-                            "access_hosts",
-                            con_info->req_parms.access_hosts))
-        {
-          free (con_info->req_parms.access_hosts);
-          con_info->req_parms.access_hosts = NULL;
-        }
-      if (openvas_validate (validator,
-                            "hosts_allow",
-                            con_info->req_parms.hosts_allow))
-        {
-          free (con_info->req_parms.hosts_allow);
-          con_info->req_parms.hosts_allow = NULL;
-        }
+      validate (validator, "role", &con_info->req_parms.role);
+      validate (validator, "access_hosts", &con_info->req_parms.access_hosts);
+      validate (validator, "hosts_allow", &con_info->req_parms.hosts_allow);
       con_info->response =
         create_user_oap (credentials,
                          con_info->req_parms.login,
@@ -1749,69 +1697,18 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_schedule"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "comment", con_info->req_parms.comment))
-        {
-          free (con_info->req_parms.comment);
-          con_info->req_parms.comment = NULL;
-        }
-      if (openvas_validate (validator, "hour", con_info->req_parms.hour))
-        {
-          free (con_info->req_parms.hour);
-          con_info->req_parms.hour = NULL;
-        }
-      if (openvas_validate (validator, "minute", con_info->req_parms.minute))
-        {
-          free (con_info->req_parms.minute);
-          con_info->req_parms.minute = NULL;
-        }
-      if (openvas_validate (validator,
-                            "day_of_month",
-                            con_info->req_parms.day_of_month))
-        {
-          free (con_info->req_parms.day_of_month);
-          con_info->req_parms.day_of_month = NULL;
-        }
-      if (openvas_validate (validator, "month", con_info->req_parms.month))
-        {
-          free (con_info->req_parms.month);
-          con_info->req_parms.month = NULL;
-        }
-      if (openvas_validate (validator, "year", con_info->req_parms.year))
-        {
-          free (con_info->req_parms.year);
-          con_info->req_parms.year = NULL;
-        }
-      if (openvas_validate (validator, "period", con_info->req_parms.period))
-        {
-          free (con_info->req_parms.period);
-          con_info->req_parms.period = NULL;
-        }
-      if (openvas_validate (validator,
-                            "period_unit",
-                            con_info->req_parms.period_unit))
-        {
-          free (con_info->req_parms.period_unit);
-          con_info->req_parms.period_unit = NULL;
-        }
-      if (openvas_validate (validator,
-                            "duration",
-                            con_info->req_parms.duration))
-        {
-          free (con_info->req_parms.duration);
-          con_info->req_parms.duration = NULL;
-        }
-      if (openvas_validate (validator,
-                            "duration_unit",
-                            con_info->req_parms.duration_unit))
-        {
-          free (con_info->req_parms.duration_unit);
-          con_info->req_parms.duration_unit = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "comment", &con_info->req_parms.comment);
+      validate (validator, "hour", &con_info->req_parms.hour);
+      validate (validator, "minute", &con_info->req_parms.minute);
+      validate (validator, "day_of_month", &con_info->req_parms.day_of_month);
+      validate (validator, "month", &con_info->req_parms.month);
+      validate (validator, "year", &con_info->req_parms.year);
+      validate (validator, "period", &con_info->req_parms.period);
+      validate (validator, "period_unit", &con_info->req_parms.period_unit);
+      validate (validator, "duration", &con_info->req_parms.duration);
+      validate (validator, "duration_unit", &con_info->req_parms.duration_unit);
+
       con_info->response =
         create_schedule_omp (credentials,
                              con_info->req_parms.name,
@@ -1828,12 +1725,7 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_target"))
     {
-      if (openvas_validate (validator, "name",
-                            con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
       if (openvas_validate (validator,
                             "hosts",
                             con_info->req_parms.hosts)
@@ -1842,34 +1734,13 @@
           free (con_info->req_parms.hosts);
           con_info->req_parms.hosts = NULL;
         }
-      if (openvas_validate (validator, "comment", con_info->req_parms.comment))
-        {
-          free (con_info->req_parms.comment);
-          con_info->req_parms.comment = NULL;
-        }
-      if (openvas_validate (validator, "lsc_credential_id",
-                            con_info->req_parms.lsc_credential_id))
-        {
-          free (con_info->req_parms.lsc_credential_id);
-          con_info->req_parms.lsc_credential_id = NULL;
-        }
-      if (openvas_validate (validator, "target_locator",
-                            con_info->req_parms.target_locator))
-        {
-          free (con_info->req_parms.target_locator);
-          con_info->req_parms.target_locator = NULL;
-        }
-      if (openvas_validate (validator, "lsc_password",
-                            con_info->req_parms.password))
-        {
-          free (con_info->req_parms.password);
-          con_info->req_parms.password = NULL;
-        }
-      if (openvas_validate (validator, "login", con_info->req_parms.login))
-        {
-          free (con_info->req_parms.login);
-          con_info->req_parms.login = NULL;
-        }
+      validate (validator, "comment", &con_info->req_parms.comment);
+      validate (validator, "lsc_credential_id", 
+                &con_info->req_parms.lsc_credential_id);
+      validate (validator, "target_locator",
+                &con_info->req_parms.target_locator);
+      validate (validator, "lsc_password", &con_info->req_parms.password);
+      validate (validator, "login", &con_info->req_parms.login);
       con_info->response =
         create_target_omp (credentials, con_info->req_parms.name,
                            con_info->req_parms.hosts,
@@ -1881,21 +1752,9 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "create_config"))
     {
-      if (openvas_validate (validator, "base", con_info->req_parms.base))
-        {
-          free (con_info->req_parms.base);
-          con_info->req_parms.base  = NULL;
-        }
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "comment", con_info->req_parms.comment))
-        {
-          free (con_info->req_parms.comment);
-          con_info->req_parms.comment = NULL;
-        }
+      validate (validator, "base", &con_info->req_parms.base);
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "comment", &con_info->req_parms.comment);
       con_info->response =
         create_config_omp (credentials, con_info->req_parms.name,
                            con_info->req_parms.comment,
@@ -1910,17 +1769,9 @@
 
       /* Check parameters for creating the note. */
 
-      if (openvas_validate (validator, "oid", con_info->req_parms.oid))
-        {
-          free (con_info->req_parms.oid);
-          con_info->req_parms.oid = NULL;
-        }
+      validate (validator, "oid", &con_info->req_parms.oid);
 
-      if (openvas_validate (validator, "text", con_info->req_parms.text))
-        {
-          free (con_info->req_parms.text);
-          con_info->req_parms.text = NULL;
-        }
+      validate (validator, "text", &con_info->req_parms.text);
 
        if (strcmp (con_info->req_parms.port, "")
            && openvas_validate (validator, "port", con_info->req_parms.port))
@@ -1968,70 +1819,18 @@
 
       /* Check parameters for requesting the report. */
 
+      validate (validator, "report_id", &con_info->req_parms.report_id);
+      validate (validator, "first_result", &con_info->req_parms.first_result);
+      validate (validator, "max_results", &con_info->req_parms.max_results);
+      validate (validator, "sort_field", &con_info->req_parms.sort_field);
+      validate (validator, "sort_order", &con_info->req_parms.sort_order);
+      validate (validator, "levels", &con_info->req_parms.levels);
+      validate (validator, "notes", &con_info->req_parms.notes);
+      validate (validator, "result_hosts_only",
+                &con_info->req_parms.result_hosts_only);
+      validate (validator, "search_phrase",
+                &con_info->req_parms.search_phrase);
       if (openvas_validate (validator,
-                            "report_id",
-                            con_info->req_parms.report_id))
-        {
-          free (con_info->req_parms.report_id);
-          con_info->req_parms.report_id = NULL;
-        }
-      if (openvas_validate (validator,
-                            "first_result",
-                            con_info->req_parms.first_result))
-        {
-          free (con_info->req_parms.first_result);
-          con_info->req_parms.first_result = NULL;
-        }
-      if (openvas_validate (validator,
-                            "max_results",
-                            con_info->req_parms.max_results))
-        {
-          free (con_info->req_parms.max_results);
-          con_info->req_parms.max_results = NULL;
-        }
-      if (openvas_validate (validator,
-                            "sort_field",
-                            con_info->req_parms.sort_field))
-        {
-          free (con_info->req_parms.sort_field);
-          con_info->req_parms.sort_field = NULL;
-        }
-      if (openvas_validate (validator,
-                            "sort_order",
-                            con_info->req_parms.sort_order))
-        {
-          free (con_info->req_parms.sort_order);
-          con_info->req_parms.sort_order = NULL;
-        }
-      if (openvas_validate (validator,
-                            "levels",
-                            con_info->req_parms.levels))
-        {
-          free (con_info->req_parms.levels);
-          con_info->req_parms.levels = NULL;
-        }
-      if (openvas_validate (validator,
-                            "notes",
-                            con_info->req_parms.notes))
-        {
-          free (con_info->req_parms.notes);
-          con_info->req_parms.notes = NULL;
-        }
-      if (openvas_validate (validator,
-                            "result_hosts_only",
-                            con_info->req_parms.result_hosts_only))
-        {
-          free (con_info->req_parms.result_hosts_only);
-          con_info->req_parms.result_hosts_only = NULL;
-        }
-      if (openvas_validate (validator,
-                            "search_phrase",
-                            con_info->req_parms.search_phrase))
-        {
-          free (con_info->req_parms.search_phrase);
-          con_info->req_parms.search_phrase = NULL;
-        }
-      if (openvas_validate (validator,
                             "min_cvss_base",
                             con_info->req_parms.min_cvss_base))
         {
@@ -2093,31 +1892,11 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "modify_auth"))
     {
-      if (openvas_validate (validator, "group", con_info->req_parms.group))
-        {
-          free (con_info->req_parms.group);
-          con_info->req_parms.group = NULL;
-        }
-      if (openvas_validate (validator, "enable", con_info->req_parms.enable))
-        {
-          free (con_info->req_parms.enable);
-          con_info->req_parms.enable = NULL;
-        }
-      if (openvas_validate (validator, "authdn", con_info->req_parms.authdn))
-        {
-          free (con_info->req_parms.authdn);
-          con_info->req_parms.authdn = NULL;
-        }
-      if (openvas_validate (validator, "ldaphost", con_info->req_parms.ldaphost))
-        {
-          free (con_info->req_parms.ldaphost);
-          con_info->req_parms.ldaphost = NULL;
-        }
-      if (openvas_validate (validator, "domain", con_info->req_parms.domain))
-        {
-          free (con_info->req_parms.domain);
-          con_info->req_parms.domain = NULL;
-        }
+      validate (validator, "group", &con_info->req_parms.group);
+      validate (validator, "enable", &con_info->req_parms.enable);
+      validate (validator, "authdn", &con_info->req_parms.authdn);
+      validate (validator, "ldaphost", &con_info->req_parms.ldaphost);
+      validate (validator, "domain", &con_info->req_parms.domain);
 
       con_info->response =
         modify_ldap_auth_oap (credentials,
@@ -2129,16 +1908,9 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "save_config"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "family_page", con_info->req_parms.submit))
-        {
-          free (con_info->req_parms.submit);
-          con_info->req_parms.submit = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "family_page", &con_info->req_parms.submit);
+
       con_info->response =
         save_config_omp (credentials,
                          con_info->req_parms.name,
@@ -2151,16 +1923,8 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "save_config_family"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "family", con_info->req_parms.family))
-        {
-          free (con_info->req_parms.family);
-          con_info->req_parms.family = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "family", &con_info->req_parms.family);
       con_info->response =
         save_config_family_omp (credentials,
                                 con_info->req_parms.name,
@@ -2171,21 +1935,9 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "save_config_nvt"))
     {
-      if (openvas_validate (validator, "name", con_info->req_parms.name))
-        {
-          free (con_info->req_parms.name);
-          con_info->req_parms.name = NULL;
-        }
-      if (openvas_validate (validator, "family", con_info->req_parms.family))
-        {
-          free (con_info->req_parms.family);
-          con_info->req_parms.family = NULL;
-        }
-      if (openvas_validate (validator, "oid", con_info->req_parms.oid))
-        {
-          free (con_info->req_parms.oid);
-          con_info->req_parms.oid = NULL;
-        }
+      validate (validator, "name", &con_info->req_parms.name);
+      validate (validator, "family", &con_info->req_parms.family);
+      validate (validator, "oid", &con_info->req_parms.oid);
       con_info->response =
         save_config_nvt_omp (credentials,
                              con_info->req_parms.name,
@@ -2208,44 +1960,13 @@
     }
   else if (!strcmp (con_info->req_parms.cmd, "save_user"))
     {
-      if (openvas_validate (validator, "login", con_info->req_parms.login))
-        {
-          free (con_info->req_parms.login);
-          con_info->req_parms.login = NULL;
-        }
-      if (openvas_validate (validator,
-                            "modify_password",
-                            con_info->req_parms.modify_password))
-        {
-          free (con_info->req_parms.modify_password);
-          con_info->req_parms.modify_password = NULL;
-        }
-      if (openvas_validate (validator,
-                            "password",
-                            con_info->req_parms.password))
-        {
-          free (con_info->req_parms.password);
-          con_info->req_parms.password = NULL;
-        }
-      if (openvas_validate (validator, "role", con_info->req_parms.role))
-        {
-          free (con_info->req_parms.role);
-          con_info->req_parms.role = NULL;
-        }
-      if (openvas_validate (validator,
-                            "access_hosts",
-                            con_info->req_parms.access_hosts))
-        {
-          free (con_info->req_parms.access_hosts);
-          con_info->req_parms.access_hosts = NULL;
-        }
-      if (openvas_validate (validator,
-                            "hosts_allow",
-                            con_info->req_parms.hosts_allow))
-        {
-          free (con_info->req_parms.hosts_allow);
-          con_info->req_parms.hosts_allow = NULL;
-        }
+      validate (validator, "login", &con_info->req_parms.login);
+      validate (validator, "modify_password",
+                &con_info->req_parms.modify_password);
+      validate (validator, "password", &con_info->req_parms.password);
+      validate (validator, "role", &con_info->req_parms.role);
+      validate (validator, "access_hosts", &con_info->req_parms.access_hosts);
+      validate (validator, "hosts_allow", &con_info->req_parms.hosts_allow);
       con_info->response =
         save_user_oap (credentials,
                        con_info->req_parms.login,



More information about the Openvas-commits mailing list