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

List:       openvas-cvs
Subject:    [Openvas-commits] r29712 - in branches/openvas-manager-7.0: . src
From:       scm-commit () wald ! intevation ! org
Date:       2017-09-29 10:12:05
Message-ID: 20170929101205.E643098D42AC () wald ! intevation ! org
[Download RAW message or body]

Author: timopollmeier
Date: 2017-09-29 12:12:05 +0200 (Fri, 29 Sep 2017)
New Revision: 29712

Modified:
   branches/openvas-manager-7.0/ChangeLog
   branches/openvas-manager-7.0/src/manage_sql.c
Log:
	Backport r29710.

	* 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: branches/openvas-manager-7.0/ChangeLog
===================================================================
--- branches/openvas-manager-7.0/ChangeLog	2017-09-29 10:07:36 UTC (rev 29711)
+++ branches/openvas-manager-7.0/ChangeLog	2017-09-29 10:12:05 UTC (rev 29712)
@@ -1,3 +1,10 @@
+2017-09-29  Timo Pollmeier <timo.pollmeier@greenbone.net>
+
+	Backport r29710.
+
+	* 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>
 
 	Backport r29706.

Modified: branches/openvas-manager-7.0/src/manage_sql.c
===================================================================
--- branches/openvas-manager-7.0/src/manage_sql.c	2017-09-29 10:07:36 UTC (rev 29711)
+++ branches/openvas-manager-7.0/src/manage_sql.c	2017-09-29 10:12:05 UTC (rev 29712)
@@ -10785,11 +10785,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,
@@ -10849,7 +10872,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. */
@@ -10860,6 +10885,9 @@
                                   report_zone,
                                   host_summary);
 
+  get_data_reset (alert_filter_get);
+  g_free (alert_filter_get);
+
   if (report_content == NULL)
     return -1;
 
@@ -10928,6 +10956,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;
@@ -10958,6 +10987,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)
                 {
@@ -10985,6 +11023,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. */
@@ -11012,6 +11052,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);
@@ -11020,7 +11062,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. */
@@ -11030,6 +11075,8 @@
                                                   &term,
                                                   &report_zone,
                                                   &host_summary);
+                  get_data_reset (alert_filter_get);
+                  g_free (alert_filter_get);
                   if (report_content == NULL)
                     {
                       free (event_desc);
@@ -11109,6 +11156,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. */
@@ -11136,6 +11185,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);
@@ -11144,7 +11195,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. */
@@ -11154,6 +11209,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);
@@ -11246,6 +11303,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);
@@ -11389,6 +11448,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)
             {
@@ -11493,7 +11553,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,
@@ -11503,6 +11575,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__);
@@ -11554,6 +11628,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)
             {
@@ -11634,7 +11709,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,
@@ -11643,6 +11730,8 @@
                                           NULL,
                                           NULL,
                                           NULL);
+          get_data_reset (alert_filter_get);
+          g_free (alert_filter_get);
           free (filt_id);
           if (report_content == NULL)
             {
@@ -11836,6 +11925,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)
             {
@@ -11877,7 +11967,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,
@@ -11886,6 +11988,8 @@
                                           NULL,
                                           NULL,
                                           NULL);
+          get_data_reset (alert_filter_get);
+          g_free (alert_filter_get);
           if (report_content == NULL)
             return -1;
 
@@ -11941,6 +12045,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)
             {
@@ -12001,7 +12106,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,
@@ -12010,6 +12127,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