Author: bh
Date: 2007-07-23 20:59:36 +0200 (Mon, 23 Jul 2007)
New Revision: 303

Modified:
   trunk/openvas-client/ChangeLog
   trunk/openvas-client/nessus/nessus_plugin.c
   trunk/openvas-client/nessus/nessus_plugin.h
Log:
* nessus/nessus_plugin.h (struct nessus_plugin): The plugin
description is now stored uncompressed.

* nessus/nessus_plugin.c (intern_string): New.  Function to intern
strings.
(nessus_plugin_new): Use intern_string to store the description
uncompressed but shared among nessus_plugin instances for the same
plugin.
(nessus_plugin_get_description): Adapt to description changes.


Modified: trunk/openvas-client/ChangeLog
===================================================================
--- trunk/openvas-client/ChangeLog      2007-07-23 13:16:29 UTC (rev 302)
+++ trunk/openvas-client/ChangeLog      2007-07-23 18:59:36 UTC (rev 303)
@@ -1,5 +1,17 @@
 2007-07-23  Bernhard Herzog  <[EMAIL PROTECTED]>
 
+       * nessus/nessus_plugin.h (struct nessus_plugin): The plugin
+       description is now stored uncompressed.
+
+       * nessus/nessus_plugin.c (intern_string): New.  Function to intern
+       strings.
+       (nessus_plugin_new): Use intern_string to store the description
+       uncompressed but shared among nessus_plugin instances for the same
+       plugin.
+       (nessus_plugin_get_description): Adapt to description changes.
+
+2007-07-23  Bernhard Herzog  <[EMAIL PROTECTED]>
+
        * nessus/cli.c (_cli_sql_dump_plugins, _cli_dump_plugins): Use
        nessus_plugin_get_description to get the uncompressed description
 

Modified: trunk/openvas-client/nessus/nessus_plugin.c
===================================================================
--- trunk/openvas-client/nessus/nessus_plugin.c 2007-07-23 13:16:29 UTC (rev 
302)
+++ trunk/openvas-client/nessus/nessus_plugin.c 2007-07-23 18:59:36 UTC (rev 
303)
@@ -1,15 +1,34 @@
 #include <includes.h>
 #include <zlib.h>
+#include <glib.h>
 #include "nessus_plugin.h"
 
+static GHashTable* interned_strings = NULL;
 
+static char *
+intern_string(char * s)
+{
+  char *interned;
 
+  if (!interned_strings)
+    {
+      interned_strings = g_hash_table_new(g_str_hash, g_str_equal);
+    }
 
+  interned = g_hash_table_lookup(interned_strings, s);
+  if (interned)
+    return interned;
+
+  interned = estrdup(s);
+
+  g_hash_table_insert(interned_strings, interned, interned);
+  return interned;
+}
+
+
 struct nessus_plugin * nessus_plugin_new(char * id, char * name, char * 
category, char * copyright, char * description, char * summary, char * family, 
char * version, char * cve, char * bid, char * xrefs)
 {
  struct nessus_plugin * np = malloc(sizeof(*np));
- unsigned char * buf;
- unsigned long    bufsz;
 
  if ( np == NULL ) abort();
  bzero(np, sizeof(*np));
@@ -20,18 +39,8 @@
  np->name = cache_inc(name); 
  np->category = cache_inc(category);
  np->copyright = cache_inc(copyright);
- 
- np->desc_len = strlen(description);
 
- bufsz = np->desc_len + 255;
- buf = malloc ( bufsz );
- 
- if ( buf == NULL ) abort();
- compress2(buf, &bufsz, (unsigned char*)description, np->desc_len, 3);
- buf = realloc(buf, bufsz);
- np->zdesc_len = bufsz;
- if ( buf == NULL ) abort();
- np->zdescription = buf;
+ np->description = intern_string(description);
 
  np->summary = strdup(summary);
  np->family  = cache_inc(family);
@@ -79,16 +88,12 @@
   return NULL;
 }
 
-char * nessus_plugin_get_description(struct nessus_plugin * plugin)
+char *
+nessus_plugin_get_description(struct nessus_plugin * plugin)
 {
- char * ret;
- unsigned long retsz = plugin->desc_len;
- ret = emalloc(plugin->desc_len + 1);
- uncompress((unsigned char*)ret, &retsz, plugin->zdescription, 
plugin->zdesc_len);
- return ret;
+  return estrdup(plugin->description);
 }
 
-
 /* Create a duplicate of the plugin */
 struct nessus_plugin*
 nessus_plugin_duplicate(struct nessus_plugin *plugin)

Modified: trunk/openvas-client/nessus/nessus_plugin.h
===================================================================
--- trunk/openvas-client/nessus/nessus_plugin.h 2007-07-23 13:16:29 UTC (rev 
302)
+++ trunk/openvas-client/nessus/nessus_plugin.h 2007-07-23 18:59:36 UTC (rev 
303)
@@ -7,11 +7,9 @@
        
        char * category;
        char * copyright;
-       
-       unsigned char * zdescription;
-       unsigned int    desc_len;
-       unsigned int    zdesc_len;
-       
+
+       char * description;
+
        char * summary;
 
        char * family;

_______________________________________________
Openvas-commits mailing list
[email protected]
http://lists.wald.intevation.org/mailman/listinfo/openvas-commits

Reply via email to