Greenbone Vulnerability Management Libraries 22.12.2
nvticache.c File Reference

Implementation of API to handle NVT Info Cache. More...

#include "nvticache.h"
#include "kb.h"
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <time.h>

Macros

#define G_LOG_DOMAIN   "libgvm util"
 GLib logging domain.
 

Functions

int nvticache_initialized (void)
 Return whether the nvt cache is initialized.
 
int nvticache_init (const char *src, const char *kb_path)
 Initializes the nvti cache.
 
kb_t nvticache_get_kb (void)
 Return the nvticache kb.
 
int nvticache_check (const gchar *filename)
 Check if the nvt for the given filename exists in cache.
 
void nvticache_reset (void)
 Reset connection to KB. To be called after a fork().
 
static char * nvt_feed_version ()
 Determine the version of the NVT feed.
 
void nvticache_save (void)
 Save the nvticache to disk.
 
int nvticache_add (const nvti_t *nvti, const char *filename)
 Add a NVT Information to the cache.
 
char * nvticache_get_src (const char *oid)
 Get the full source filename of an OID.
 
char * nvticache_get_oid (const char *filename)
 Get the OID from a plugin filename.
 
char * nvticache_get_filename (const char *oid)
 Get the filename from a plugin OID.
 
char * nvticache_get_required_keys (const char *oid)
 Get the Required Keys from a plugin OID.
 
char * nvticache_get_mandatory_keys (const char *oid)
 Get the Mandatory Keys from a plugin OID.
 
char * nvticache_get_excluded_keys (const char *oid)
 Get the Excluded Keys from a plugin OID.
 
char * nvticache_get_required_udp_ports (const char *oid)
 Get the Required udp ports from a plugin OID.
 
char * nvticache_get_required_ports (const char *oid)
 Get the Required ports from a plugin OID.
 
char * nvticache_get_dependencies (const char *oid)
 Get the Dependencies from a plugin OID.
 
int nvticache_get_category (const char *oid)
 Get the Category from a plugin OID.
 
char * nvticache_get_name (const char *oid)
 Get the name from a plugin OID.
 
char * nvticache_get_cves (const char *oid)
 Get the cves from a plugin OID.
 
char * nvticache_get_bids (const char *oid)
 Get the bids from a plugin OID.
 
char * nvticache_get_xrefs (const char *oid)
 Get the xrefs from a plugin OID.
 
char * nvticache_get_family (const char *oid)
 Get the family from a plugin OID.
 
char * nvticache_get_tags (const char *oid)
 Get the tags from a plugin OID.
 
nvti_tnvticache_get_nvt (const char *oid)
 Get the nvti from a plugin OID.
 
GSList * nvticache_get_prefs (const char *oid)
 Get the prefs from a plugin OID.
 
GSList * nvticache_get_oids ()
 Get the list of nvti OIDs.
 
size_t nvticache_count ()
 Get the number of nvt's in the cache.
 
void nvticache_delete (const char *oid)
 Delete NVT from the cache.
 
char * nvticache_feed_version (void)
 Get the NVT feed version.
 
int nvticache_check_feed (void)
 Check if the plugins feed was newer than cached feed.
 

Variables

char * src_path = NULL
 
kb_t cache_kb = NULL
 
int cache_saved = 1
 

Detailed Description

Implementation of API to handle NVT Info Cache.

This file contains all methods to handle NVT Information Cache (nvticache_t).

The module consequently uses glib datatypes and api for memory management etc.

Macro Definition Documentation

◆ G_LOG_DOMAIN

#define G_LOG_DOMAIN   "libgvm util"

GLib logging domain.

Function Documentation

◆ nvt_feed_version()

static char * nvt_feed_version ( )
static

Determine the version of the NVT feed.

Returns
Feed version string if success, NULL otherwise.

◆ nvticache_add()

int nvticache_add ( const nvti_t * nvti,
const char * filename )

Add a NVT Information to the cache.

Parameters
nvtiThe NVT Information to add
filenameThe name of the original NVT without the path to the base location of NVTs (e.g. "scriptname1.nasl" or even "subdir1/subdir2/scriptname2.nasl" )
Returns
0 in case of success, anything else indicates an error.

◆ nvticache_check()

int nvticache_check ( const gchar * filename)

Check if the nvt for the given filename exists in cache.

Parameters
filenameThe name of the original NVT without the path to the base location of NVTs (e.g. "scriptname1.nasl" or even "subdir1/subdir2/scriptname2.nasl" )
Returns
1 if nvt is in cache and up to date, 0 otherwise.

◆ nvticache_check_feed()

int nvticache_check_feed ( void )

Check if the plugins feed was newer than cached feed.

Returns
1 if new feed, 0 if matching feeds or error.

◆ nvticache_count()

size_t nvticache_count ( void )

Get the number of nvt's in the cache.

Returns
Number of nvt's.

◆ nvticache_delete()

void nvticache_delete ( const char * oid)

Delete NVT from the cache.

Parameters
[in]oidOID to match.

◆ nvticache_feed_version()

char * nvticache_feed_version ( void )

Get the NVT feed version.

Returns
Feed version.

◆ nvticache_get_bids()

char * nvticache_get_bids ( const char * oid)

Get the bids from a plugin OID.

Parameters
[in]oidOID to match.
Returns
BIDs matching OID, NULL otherwise.

◆ nvticache_get_category()

int nvticache_get_category ( const char * oid)

Get the Category from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Category matching OID, -1 otherwise.

◆ nvticache_get_cves()

char * nvticache_get_cves ( const char * oid)

Get the cves from a plugin OID.

Parameters
[in]oidOID to match.
Returns
CVEs matching OID, NULL otherwise.

◆ nvticache_get_dependencies()

char * nvticache_get_dependencies ( const char * oid)

Get the Dependencies from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Dependencies matching OID, NULL otherwise.

◆ nvticache_get_excluded_keys()

char * nvticache_get_excluded_keys ( const char * oid)

Get the Excluded Keys from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Excluded Keys matching OID, NULL otherwise.

◆ nvticache_get_family()

char * nvticache_get_family ( const char * oid)

Get the family from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Family matching OID, NULL otherwise.

◆ nvticache_get_filename()

char * nvticache_get_filename ( const char * oid)

Get the filename from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Filanem matching OID, NULL otherwise.

◆ nvticache_get_kb()

kb_t nvticache_get_kb ( void )

Return the nvticache kb.

Returns
Cache kb.

◆ nvticache_get_mandatory_keys()

char * nvticache_get_mandatory_keys ( const char * oid)

Get the Mandatory Keys from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Mandatory Keys matching OID, NULL otherwise.

◆ nvticache_get_name()

char * nvticache_get_name ( const char * oid)

Get the name from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Name matching OID, NULL otherwise.

◆ nvticache_get_nvt()

nvti_t * nvticache_get_nvt ( const char * oid)

Get the nvti from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Full nvti matching OID, NULL otherwise.

◆ nvticache_get_oid()

char * nvticache_get_oid ( const char * filename)

Get the OID from a plugin filename.

Parameters
filenameFilename to lookup.
Returns
OID matching filename if found, NULL otherwise.

◆ nvticache_get_oids()

GSList * nvticache_get_oids ( void )

Get the list of nvti OIDs.

Returns
OIDs list.

◆ nvticache_get_prefs()

GSList * nvticache_get_prefs ( const char * oid)

Get the prefs from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Prefs matching OID, NULL otherwise.

◆ nvticache_get_required_keys()

char * nvticache_get_required_keys ( const char * oid)

Get the Required Keys from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Required Keys matching OID, NULL otherwise.

◆ nvticache_get_required_ports()

char * nvticache_get_required_ports ( const char * oid)

Get the Required ports from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Required ports matching OID, NULL otherwise.

◆ nvticache_get_required_udp_ports()

char * nvticache_get_required_udp_ports ( const char * oid)

Get the Required udp ports from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Required udp ports matching OID, NULL otherwise.

◆ nvticache_get_src()

char * nvticache_get_src ( const char * oid)

Get the full source filename of an OID.

Parameters
oidThe OID to look up.
Returns
Filename with full path matching OID if found, NULL otherwise.

◆ nvticache_get_tags()

char * nvticache_get_tags ( const char * oid)

Get the tags from a plugin OID.

Parameters
[in]oidOID to match.
Returns
Tags matching OID, NULL otherwise.

◆ nvticache_get_xrefs()

char * nvticache_get_xrefs ( const char * oid)

Get the xrefs from a plugin OID.

Parameters
[in]oidOID to match.
Returns
XREFs matching OID, NULL otherwise.

◆ nvticache_init()

int nvticache_init ( const char * src,
const char * kb_path )

Initializes the nvti cache.

Parameters
srcThe directory that contains the nvt files.
kb_pathPath to kb socket.
Returns
0 in case of success, anything else indicates an error.

◆ nvticache_initialized()

int nvticache_initialized ( void )

Return whether the nvt cache is initialized.

Returns
1 if cache is initialized, 0 otherwise.

◆ nvticache_reset()

void nvticache_reset ( void )

Reset connection to KB. To be called after a fork().

◆ nvticache_save()

void nvticache_save ( void )

Save the nvticache to disk.

Variable Documentation

◆ cache_kb

kb_t cache_kb = NULL

Cache KB handler.

◆ cache_saved

int cache_saved = 1

If cache was saved.

◆ src_path

char* src_path = NULL

The directory of the source files.