diff -urNB nessus-core/nessus/filter.c nessus-core-modified/nessus/filter.c
--- nessus-core/nessus/filter.c	Thu Mar  7 01:58:41 2002
+++ nessus-core-modified/nessus/filter.c	Thu Mar  7 01:09:54 2002
@@ -36,6 +36,7 @@
 static int filter_on_summary = 0;
 static int filter_on_author = 0;
 static int filter_on_id = 0;
+static int filter_on_category = 0;
 
 
 static void
@@ -57,6 +58,7 @@
 	filter_on_summary = GTK_TOGGLE_BUTTON(arg_get_value(ctrls, "FILTER_SUMMARY"))->active;
 	filter_on_author = GTK_TOGGLE_BUTTON(arg_get_value(ctrls, "FILTER_AUTHOR"))->active;
 	filter_on_id = GTK_TOGGLE_BUTTON(arg_get_value(ctrls, "FILTER_ID"))->active;
+	filter_on_category = GTK_TOGGLE_BUTTON(arg_get_value(ctrls, "FILTER_CATEGORY"))->active;
 	arg_add_value(ctrls, "FILTER", ARG_STRING,filter ? strlen(filter):0, filter);
       }
 }
@@ -72,12 +74,12 @@
  w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(w), "Filter plugins...");
  
- gtk_container_border_width(GTK_CONTAINER(w), 5);
+ gtk_container_border_width(GTK_CONTAINER(w), 6);
  arg_add_value(ctrls, "WINDOW", ARG_PTR, -1, w);
  gtk_window_position(GTK_WINDOW(w), GTK_WIN_POS_CENTER);
  gtk_widget_realize(w);
  
- box = gtk_vbox_new(FALSE, 5);
+ box = gtk_vbox_new(FALSE, 6);
  gtk_container_add(GTK_CONTAINER(w), box);
  gtk_widget_show(box);
 
@@ -96,19 +98,19 @@
  hbox = gtk_hbox_new(FALSE, FALSE);
  gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 3);
  label = gtk_label_new("Pattern : ");
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 6);
  gtk_widget_show(label);
  
  entry = gtk_entry_new();
  arg_add_value(ctrls,"ENTRY", ARG_PTR, -1, entry);
- gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 6);
  gtk_widget_show(entry);
  gtk_widget_show(hbox);
  
  frame = gtk_frame_new("Filter on : ");
- gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 6);
  vbox = gtk_vbox_new(FALSE, FALSE);
- gtk_container_border_width(GTK_CONTAINER(frame), 5);
+ gtk_container_border_width(GTK_CONTAINER(frame), 6);
  gtk_container_add(GTK_CONTAINER(frame), vbox);
  gtk_widget_show(vbox);
  
@@ -142,16 +144,23 @@
  gtk_widget_show(button);
  arg_add_value(ctrls, "FILTER_ID", ARG_PTR, -1, button);
  gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), filter_on_id);
+ /*--------------------------------------------*/
+ button = gtk_check_button_new_with_label("Category");
+ gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 3);
+ gtk_widget_show(button);
+ arg_add_value(ctrls, "FILTER_CATEGORY", ARG_PTR, -1, button);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), filter_on_category);
+ 
  
  
  gtk_widget_show(frame);
  
- hbox = gtk_hbox_new(TRUE, 5);
- gtk_box_pack_start(GTK_BOX(box), hbox,FALSE, FALSE, 5);
+ hbox = gtk_hbox_new(TRUE, 6);
+ gtk_box_pack_start(GTK_BOX(box), hbox,FALSE, FALSE, 6);
  gtk_widget_show(hbox);
  
  button = gtk_button_new_with_label("OK");
- gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 6);
  GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
  gtk_widget_grab_default(button);
  gtk_widget_show(button);
@@ -163,7 +172,7 @@
 		    
  button = gtk_button_new_with_label("Cancel");
  arg_add_value(ctrls, "CANCEL", ARG_PTR, -1, button);
- gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 6);
  gtk_signal_connect(GTK_OBJECT(button), "clicked", 
  		    (GtkSignalFunc)ask_filter_callback, 
 		    (void*)ctrls);
@@ -197,6 +206,7 @@
  filter->filter_on_summary = filter_on_summary;
  filter->filter_on_author = filter_on_author;
  filter->filter_on_id = filter_on_id;
+ filter->filter_on_category = filter_on_category;
  
  gtk_widget_destroy(arg_get_value(ctrls, "WINDOW"));
  arg_free(ctrls);
@@ -259,6 +269,7 @@
  char * summary = arg_get_value(plugin, "SUMMARY");
  char * author = arg_get_value(plugin, "COPYRIGHT");
  char * id = arg_get_value(plugin, "ASC_ID");
+ char * category = arg_get_value(plugin, "CATEGORY");
  
  if(!filter->pattern || !strlen(filter->pattern))
   return 0;
@@ -283,6 +294,11 @@
 	  ret = match(author, filter->pattern);
 	  if(!ret)return 0;
 	 }
+ if(filter->filter_on_category)
+	 {
+	  ret = match(category, filter->pattern);
+	  if(!ret)return 0;
+	 }
  if(filter->filter_on_id)ret= match(id, filter->pattern);
 #endif
   return ret;
diff -urNB nessus-core/nessus/filter.h nessus-core-modified/nessus/filter.h
--- nessus-core/nessus/filter.h	Thu Mar  7 01:58:49 2002
+++ nessus-core-modified/nessus/filter.h	Thu Mar  7 00:50:22 2002
@@ -6,6 +6,7 @@
 	int filter_on_description:1;
 	int filter_on_summary:1;
 	int filter_on_author:1;
+	int filter_on_category:1;
 	int filter_on_id;
 };
 	
