OpenVAS Libraries  9.0.3
cvss.h File Reference

Protos for CVSS utility functions. More...

#include <glib.h>
Include dependency graph for cvss.h:

Go to the source code of this file.

Functions

double get_cvss_score_from_base_metrics (const char *)
 Calculate CVSS Score. More...
 
gchar * cvss_as_str (double)
 

Detailed Description

Protos for CVSS utility functions.

This file contains the protos for cvss.c

Definition in file cvss.h.

Function Documentation

◆ cvss_as_str()

gchar* cvss_as_str ( double  )

◆ get_cvss_score_from_base_metrics()

double get_cvss_score_from_base_metrics ( const char *  cvss_str)

Calculate CVSS Score.

Parameters
cvss_strBase vector string from which to compute score.
Returns
The resulting score. -1 upon error during parsing.

Definition at line 317 of file cvss.c.

318 {
319  struct cvss cvss;
320  char *token, *base_str, *base_metrics;
321 
322  memset(&cvss, 0x00, sizeof(struct cvss));
323 
324  if (cvss_str == NULL)
325  return -1.0;
326 
327  base_str = base_metrics = g_strdup_printf ("%s/", cvss_str);
328 
329  while ((token = strchr (base_metrics, '/')) != NULL)
330  {
331  char *token2 = strtok (base_metrics, ":");
332  char *metric_name = token2;
333  char *metric_value;
334  enum base_metrics mval;
335  int rc;
336 
337  *token++ = '\0';
338 
339  if (metric_name == NULL)
340  goto ret_err;
341 
342  metric_value = strtok (NULL, ":");
343 
344  if (metric_value == NULL)
345  goto ret_err;
346 
347  rc = toenum (metric_name, &mval);
348  if (rc)
349  goto ret_err;
350 
351  if (set_impact_from_str (metric_value, mval, &cvss))
352  goto ret_err;
353 
354  base_metrics = token;
355  }
356 
357  g_free (base_str);
358  return __get_cvss_score (&cvss);
359 
360 ret_err:
361  g_free (base_str);
362  return (double)-1;
363 }
Describe a CVSS metrics.
Definition: cvss.c:117
base_metrics
Definition: cvss.c:103