[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openvas-cvs
Subject:    [Openvas-commits] r29710 - in trunk/gvm: . src
From:       scm-commit () wald ! intevation ! org
Date:       2017-09-29 9:58:54
Message-ID: 20170929095855.6377398D42AE () wald ! intevation ! org
[Download RAW message or body]

Author: timopollmeier
Date: 2017-09-29 11:58:54 +0200 (Fri, 29 Sep 2017)
New Revision: 29710

Modified:
   trunk/gvm/ChangeLog
   trunk/gvm/src/manage_sql.c
Log:
	* src/manage_sql.c (report_content_for_alert, escalate_2): If a filter
	is set in the alert, use it to filter the results.

Modified: trunk/gvm/ChangeLog
===================================================================
--- trunk/gvm/ChangeLog	2017-09-29 09:44:55 UTC (rev 29709)
+++ trunk/gvm/ChangeLog	2017-09-29 09:58:54 UTC (rev 29710)
@@ -1,3 +1,8 @@
+2017-09-29  Timo Pollmeier <timo.pollmeier@greenbone.net>
+
+	* src/manage_sql.c (report_content_for_alert, escalate_2): If a filter
+	is set in the alert, use it to filter the results.
+
 2017-09-29  Michael Wiegand <michael.wiegand@greenbone.net>
 
 	* src/report_formats/LaTeX/latex.xsl (latex-replace-backslash-dollar):

Modified: trunk/gvm/src/manage_sql.c
===================================================================
--- trunk/gvm/src/manage_sql.c	2017-09-29 09:44:55 UTC (rev 29709)
+++ trunk/gvm/src/manage_sql.c	2017-09-29 09:58:54 UTC (rev 29710)
@@ -10467,11 +10467,34 @@
                           report_format_t *used_report_format)
 {
   report_format_t report_format;
-  char *format_uuid;
+  char *filt_id, *format_uuid;
+  filter_t filter;
+  get_data_t *alert_filter_get;
   gchar *report_content;
 
   assert (content);
 
+  // Get filter
+  filt_id = alert_filter_id (alert);
+  filter = 0;
+  if (filt_id)
+    {
+      if (find_filter_with_permission (filt_id, &filter,
+                                       "get_filters"))
+        return -1;
+      if (filter == 0)
+        return -3;
+    }
+
+  if (filter)
+    {
+      alert_filter_get = g_malloc0 (sizeof (get_data_t));
+      alert_filter_get->filt_id = filt_id;
+      alert_filter_get->filter = filter_term (filt_id);
+    }
+  else
+    alert_filter_get = NULL;
+
   // Get last report from task if no report is given
   if (report == 0)
     switch (sql_int64 (&report,
@@ -10531,7 +10554,9 @@
     }
 
   // Generate report content
-  report_content = manage_report (report, get, report_format,
+  report_content = manage_report (report,
+                                  alert_filter_get ? alert_filter_get : get,
+                                  report_format,
                                   notes_details,
                                   overrides_details,
                                   NULL, /* Type. */
@@ -10542,6 +10567,9 @@
                                   report_zone,
                                   host_summary);
 
+  get_data_reset (alert_filter_get);
+  g_free (alert_filter_get);
+
   if (report_content == NULL)
     return -1;
 
@@ -10610,6 +10638,7 @@
               char *name, *notice, *from_address, *filt_id;
               gchar *base64, *type, *extension;
               filter_t filter;
+              get_data_t *alert_filter_get;
 
               base64 = NULL;
               type = NULL;
@@ -10640,6 +10669,15 @@
                     return -3;
                 }
 
+              if (filter)
+                {
+                  alert_filter_get = g_malloc0 (sizeof (get_data_t));
+                  alert_filter_get->filt_id = filt_id;
+                  alert_filter_get->filter = filter_term (filt_id);
+                }
+              else
+                alert_filter_get = NULL;
+
               name = task_name (task);
               if (notice && strcmp (notice, "0") == 0)
                 {
@@ -10667,6 +10705,8 @@
                           free (name);
                           free (to_address);
                           free (from_address);
+                          get_data_reset (alert_filter_get);
+                          g_free (alert_filter_get);
                           return -1;
                           break;
                         default:       /* Programming error. */
@@ -10694,6 +10734,8 @@
                       free (name);
                       free (to_address);
                       free (from_address);
+                      get_data_reset (alert_filter_get);
+                      g_free (alert_filter_get);
                       return -2;
                     }
                   g_free (format_uuid);
@@ -10702,7 +10744,10 @@
                   term = NULL;
                   report_zone = NULL;
                   host_summary = NULL;
-                  report_content = manage_report (report, get, report_format,
+                  report_content = manage_report (report,
+                                                  alert_filter_get
+                                                    ? alert_filter_get : get,
+                                                  report_format,
                                                   notes_details,
                                                   overrides_details,
                                                   NULL, /* Type. */
@@ -10712,6 +10757,8 @@
                                                   &term,
                                                   &report_zone,
                                                   &host_summary);
+                  get_data_reset (alert_filter_get);
+                  g_free (alert_filter_get);
                   if (report_content == NULL)
                     {
                       free (event_desc);
@@ -10791,6 +10838,8 @@
                           free (name);
                           free (to_address);
                           free (from_address);
+                          get_data_reset (alert_filter_get);
+                          g_free (alert_filter_get);
                           return -1;
                           break;
                         default:       /* Programming error. */
@@ -10818,6 +10867,8 @@
                       free (name);
                       free (to_address);
                       free (from_address);
+                      get_data_reset (alert_filter_get);
+                      g_free (alert_filter_get);
                       return -2;
                     }
                   g_free (format_uuid);
@@ -10826,7 +10877,11 @@
                   term = NULL;
                   report_zone = NULL;
                   host_summary = NULL;
-                  report_content = manage_report (report, get, report_format,
+                  report_content = manage_report (report,
+                                                  alert_filter_get
+                                                    ? alert_filter_get
+                                                    : get,
+                                                  report_format,
                                                   notes_details,
                                                   overrides_details,
                                                   NULL, /* Type. */
@@ -10836,6 +10891,8 @@
                                                   &term,
                                                   &report_zone,
                                                   &host_summary);
+                  get_data_reset (alert_filter_get);
+                  g_free (alert_filter_get);
                   if (report_content == NULL)
                     {
                       g_free (event_desc);
@@ -10928,6 +10985,8 @@
                   g_free (event_desc);
                   g_free (generic_desc);
                   g_free (condition_desc);
+                  get_data_reset (alert_filter_get);
+                  g_free (alert_filter_get);
                 }
               free (filt_id);
               free (notice);
@@ -11071,6 +11130,7 @@
           report_format_t report_format;
           int ret;
           filter_t filter;
+          get_data_t *alert_filter_get;
 
           if (event == EVENT_NEW_SECINFO || event == EVENT_UPDATED_SECINFO)
             {
@@ -11175,7 +11235,19 @@
                 return -3;
             }
 
-          report_content = manage_report (report, get, report_format,
+          if (filter)
+            {
+              alert_filter_get = g_malloc0 (sizeof (get_data_t));
+              alert_filter_get->filt_id = filt_id;
+              alert_filter_get->filter = filter_term (filt_id);
+            }
+          else
+            alert_filter_get = NULL;
+
+          report_content = manage_report (report,
+                                          alert_filter_get ? alert_filter_get
+                                                           : get,
+                                          report_format,
                                           notes_details, overrides_details,
                                           NULL, /* Type. */
                                           &content_length,
@@ -11185,6 +11257,8 @@
                                           NULL,
                                           NULL);
           free (filt_id);
+          get_data_reset (alert_filter_get);
+          g_free (alert_filter_get);
           if (report_content == NULL)
             {
               g_warning ("%s: Empty Report", __FUNCTION__);
@@ -11236,6 +11310,7 @@
           report_format_t report_format;
           int ret;
           filter_t filter;
+          get_data_t *alert_filter_get;
 
           if (event == EVENT_NEW_SECINFO || event == EVENT_UPDATED_SECINFO)
             {
@@ -11316,7 +11391,19 @@
                 return -3;
             }
 
-          report_content = manage_report (report, get, report_format,
+          if (filter)
+            {
+              alert_filter_get = g_malloc0 (sizeof (get_data_t));
+              alert_filter_get->filt_id = filt_id;
+              alert_filter_get->filter = filter_term (filt_id);
+            }
+          else
+            alert_filter_get = NULL;
+
+          report_content = manage_report (report,
+                                          alert_filter_get ? alert_filter_get
+                                                           : get,
+                                          report_format,
                                           notes_details, overrides_details,
                                           NULL, /* Type. */
                                           &content_length,
@@ -11325,6 +11412,8 @@
                                           NULL,
                                           NULL,
                                           NULL);
+          get_data_reset (alert_filter_get);
+          g_free (alert_filter_get);
           free (filt_id);
           if (report_content == NULL)
             {
@@ -11518,6 +11607,7 @@
           report_format_t report_format;
           int ret;
           filter_t filter;
+          get_data_t *alert_filter_get;
 
           if (event == EVENT_NEW_SECINFO || event == EVENT_UPDATED_SECINFO)
             {
@@ -11559,7 +11649,19 @@
                 return -3;
             }
 
-          report_content = manage_report (report, get, report_format,
+          if (filter)
+            {
+              alert_filter_get = g_malloc0 (sizeof (get_data_t));
+              alert_filter_get->filt_id = filt_id;
+              alert_filter_get->filter = filter_term (filt_id);
+            }
+          else
+            alert_filter_get = NULL;
+
+          report_content = manage_report (report,
+                                          alert_filter_get ? alert_filter_get
+                                                           : get,
+                                          report_format,
                                           notes_details, overrides_details,
                                           NULL, /* Type. */
                                           &content_length,
@@ -11568,6 +11670,8 @@
                                           NULL,
                                           NULL,
                                           NULL);
+          get_data_reset (alert_filter_get);
+          g_free (alert_filter_get);
           if (report_content == NULL)
             return -1;
 
@@ -11623,6 +11727,7 @@
           report_format_t report_format;
           int ret;
           filter_t filter;
+          get_data_t *alert_filter_get;
 
           if (event == EVENT_NEW_SECINFO || event == EVENT_UPDATED_SECINFO)
             {
@@ -11683,7 +11788,19 @@
                 return -3;
             }
 
-          report_content = manage_report (report, get, report_format,
+          if (filter)
+            {
+              alert_filter_get = g_malloc0 (sizeof (get_data_t));
+              alert_filter_get->filt_id = filt_id;
+              alert_filter_get->filter = filter_term (filt_id);
+            }
+          else
+            alert_filter_get = NULL;
+
+          report_content = manage_report (report,
+                                          alert_filter_get ? alert_filter_get
+                                                           : get,
+                                          report_format,
                                           notes_details, overrides_details,
                                           NULL, /* Type. */
                                           &content_length,
@@ -11692,6 +11809,8 @@
                                           NULL,
                                           NULL,
                                           NULL);
+          get_data_reset (alert_filter_get);
+          g_free (alert_filter_get);
           if (report_content == NULL)
             {
               g_warning ("Empty Report");

_______________________________________________
Openvas-commits mailing list
Openvas-commits@wald.intevation.org
https://lists.wald.intevation.org/cgi-bin/mailman/listinfo/openvas-commits
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic