[Openvas-devel] Patch for CR #7

Michael Wiegand michael.wiegand at intevation.de
Wed Jun 4 09:35:09 CEST 2008


Hi,

I've prepared a patch for change request #7. Please take a look at the 
attached file and let me know what you think. As I'm new to the openvas 
project, I'd really appreciate any suggestions and feedback.

Since the new OIDs are not yet available, report_save.c will construct a 
legacy OID with the plugin ID for the time being; hope that's OK.

Regards,

  Michael
-------------- next part --------------
Index: openvas-client/nessus/preferences.c
===================================================================
--- openvas-client/nessus/preferences.c	(Revision 886)
+++ openvas-client/nessus/preferences.c	(Arbeitskopie)
@@ -719,6 +719,8 @@
     return (void *)1;
   else if(!strcmp(name, "report_plugin_details_in_pdf"))
     return (void *)1;
+  else if(!strcmp(name, "show_nvt_name_and_oid"))
+    return (void *)1;
   else
     return NULL;
 }
Index: openvas-client/nessus/prefs_dialog/prefs_dialog_prefs.c
===================================================================
--- openvas-client/nessus/prefs_dialog/prefs_dialog_prefs.c	(Revision 886)
+++ openvas-client/nessus/prefs_dialog/prefs_dialog_prefs.c	(Arbeitskopie)
@@ -48,6 +48,7 @@
   GtkWidget * check_reportplugincache;
   GtkWidget * check_scopesplugincache;
   GtkWidget * check_reportpluginpdf;
+  GtkWidget * check_show_nvt_name_and_oid;
   GtkWidget * entry_url_nessus;
   GtkWidget * entry_url_cve;
   GtkWidget * entry_url_bid;
@@ -186,6 +187,13 @@
   gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_reportpluginpdf),
       prefs_get_int(Global, "report_plugin_details_in_pdf"));
 
+  check_show_nvt_name_and_oid = gtk_check_button_new_with_mnemonic(
+      _("Show script origin in report"));
+  gtk_widget_show(check_show_nvt_name_and_oid);
+  gtk_table_attach_defaults(GTK_TABLE(table), check_show_nvt_name_and_oid, 0, 1, 1, 2);
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_show_nvt_name_and_oid),
+      prefs_get_int(Global, "show_nvt_name_and_oid"));
+
   /*
   frame = gtk_frame_new(_("External programs"));
   gtk_widget_show(frame);
@@ -276,6 +284,9 @@
 	  gtk_entry_get_text(GTK_ENTRY(entry_url_cve)));
       prefs_set_string(Global, "url_bid",
 	  gtk_entry_get_text(GTK_ENTRY(entry_url_bid)));
+      prefs_set_int(Global, "show_nvt_name_and_oid",
+	  gtk_toggle_button_get_active(
+	    GTK_TOGGLE_BUTTON(check_show_nvt_name_and_oid))?1:0);
       break;
   }
 
Index: openvas-client/nessus/prefs_dialog/prefs_report.c
===================================================================
--- openvas-client/nessus/prefs_dialog/prefs_report.c	(Revision 886)
+++ openvas-client/nessus/prefs_dialog/prefs_report.c	(Arbeitskopie)
@@ -27,6 +27,7 @@
 #include "report_save.h"
 #include "data_mining.h"
 #include "treeview_support.h"
+#include "nessus_plugin.h"
 
 /* Convert the severity string to an integer level:
  *
@@ -298,7 +299,11 @@
   const char *values[3];
   int depth = 0;
   int has_parent;
+  struct context *context = arg_get_value((struct arglist*)user_data, "REPORT_CONTEXT");
+  int plugin_id = 0;
+  struct nessus_plugin *plugin;
 
+
   if (!gtk_tree_model_get_iter(model, &iter, path))
   {
     fprintf(stderr, "row_activated: could not set iter from path\n");
@@ -338,7 +343,7 @@
     clear_report_text(user_data);
 
     subset = sort_uniq(query_backend(be,
-	    "SELECT report,severity FROM results"
+	    "SELECT report,severity,plugin_id FROM results"
 	    " WHERE %s = '%s' AND %s = '%s' AND %s = '%s'",
 	    keys[0], values[0],
 	    keys[1], values[1],
@@ -347,6 +352,27 @@
     walk = subset;
     while(walk)
     {
+      if (((prefs_get_int(Global, "show_nvt_name_and_oid")) == 1) &&
+            ((prefs_get_int(Global, "reports_use_plugin_cache")) == 1))
+      {
+        plugin_id = atoi(subset_nth_value(walk, 2));
+        plugin = nessus_plugin_get_by_id(context->plugins, plugin_id);
+        if (plugin == NULL)
+          plugin = nessus_plugin_get_by_id(context->scanners, plugin_id);
+        if (plugin == NULL)
+        {
+          fprintf(stderr, "prefs_report.row_activated: no plugin with id %d in cache!\n",
+              plugin_id);
+        }
+        else
+        {
+          gtk_text_buffer_get_end_iter(buffer, &iter);
+          gtk_text_buffer_insert(buffer, &iter,
+            g_strdup_printf("Reported by NVT %s (1.3.6.1.4.1.25623.1.0.%d):\n\n",
+                            plugin->name, plugin->id), -1);
+        }
+      }
+
       gtk_text_buffer_get_end_iter(buffer, &iter);
       gtk_text_buffer_insert(buffer, &iter, subs


More information about the Openvas-devel mailing list