OpenVAS Scanner 23.23.1
nasl_var.c File Reference
#include "nasl_var.h"
#include "nasl_debug.h"
#include "nasl_lex_ctxt.h"
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

Functions

static void copy_array (nasl_array *, const nasl_array *, int)
int hash_str2 (const char *s, int n)
static int hash_str (const char *s)
anon_nasl_varnasl_get_var_by_num (void *ctxt, nasl_array *a, int num, int create)
static named_nasl_varget_var_by_name (nasl_array *a, const char *s)
static named_nasl_varget_var_ref_by_name (lex_ctxt *ctxt, const char *name, int climb)
 This function climbs up in the context list.
static anon_nasl_varget_var_ref_by_num (lex_ctxt *ctxt, int num)
tree_cellvar2cell (anon_nasl_var *v)
tree_cellget_variable_by_name (lex_ctxt *ctxt, const char *name)
static const char * get_var_name (anon_nasl_var *v)
tree_cellget_array_elem (lex_ctxt *ctxt, const char *name, tree_cell *idx)
static void free_var_chain (named_nasl_var *)
static void free_anon_var (anon_nasl_var *)
void free_array (nasl_array *a)
static void clear_anon_var (anon_nasl_var *v)
static void copy_anon_var (anon_nasl_var *v1, const anon_nasl_var *v2)
static anon_nasl_vardup_anon_var (const anon_nasl_var *v)
static named_nasl_vardup_named_var (const named_nasl_var *v)
tree_cellcopy_ref_array (const tree_cell *c1)
static tree_cellaffect_to_anon_var (anon_nasl_var *v1, tree_cell *rval)
tree_cellnasl_affect (tree_cell *lval, tree_cell *rval)
static named_nasl_varcreate_named_var (const char *name, tree_cell *val)
static anon_nasl_varcreate_anon_var (tree_cell *val)
tree_celldecl_local_variables (lex_ctxt *lexic, tree_cell *vars)
tree_celldecl_global_variables (lex_ctxt *lexic, tree_cell *vars)
anon_nasl_varadd_numbered_var_to_ctxt (lex_ctxt *lexic, int num, tree_cell *val)
named_nasl_varadd_named_var_to_ctxt (lex_ctxt *lexic, const char *name, tree_cell *val)
tree_cellnasl_read_var_ref (lex_ctxt *lexic, tree_cell *tc)
tree_cellnasl_incr_variable (lex_ctxt *lexic, tree_cell *tc, int pre, int val)
static long int var2int (anon_nasl_var *v, int defval)
char * array2str (const nasl_array *a)
const char * var2str (anon_nasl_var *v)
long int get_int_var_by_num (lex_ctxt *lexic, int num, int defval)
long int get_int_var_by_name (lex_ctxt *lexic, const char *name, int defval)
char * get_str_var_by_num (lex_ctxt *lexic, int num)
char * get_str_var_by_name (lex_ctxt *lexic, const char *name)
static int get_var_size (const anon_nasl_var *v)
int get_var_size_by_name (lex_ctxt *lexic, const char *name)
int get_var_size_by_num (lex_ctxt *lexic, int num)
int get_var_type_by_num (lex_ctxt *lexic, int num)
 Returns NASL variable/cell type, VAR2_UNDEF if value is NULL.
int get_var_type_by_name (lex_ctxt *lexic, const char *name)
nasl_iterator nasl_array_iterator (void *ctxt, tree_cell *c)
tree_cellnasl_iterate_array (nasl_iterator *it)
int add_var_to_list (nasl_array *a, int i, const anon_nasl_var *v)
int add_var_to_array (nasl_array *a, char *name, const anon_nasl_var *v)
int array_max_index (nasl_array *a)
tree_cellmake_array_from_elems (tree_cell *el)

Variables

FILE * nasl_trace_fp

Function Documentation

◆ add_named_var_to_ctxt()

named_nasl_var * add_named_var_to_ctxt ( lex_ctxt * lexic,
const char * name,
tree_cell * val )

◆ add_numbered_var_to_ctxt()

anon_nasl_var * add_numbered_var_to_ctxt ( lex_ctxt * lexic,
int num,
tree_cell * val )

◆ add_var_to_array()

int add_var_to_array ( nasl_array * a,
char * name,
const anon_nasl_var * v )

◆ add_var_to_list()

int add_var_to_list ( nasl_array * a,
int i,
const anon_nasl_var * v )

◆ affect_to_anon_var()

tree_cell * affect_to_anon_var ( anon_nasl_var * v1,
tree_cell * rval )
static

◆ array2str()

char * array2str ( const nasl_array * a)

◆ array_max_index()

int array_max_index ( nasl_array * a)

The name is not great: this function does not returns the index of the last element, but the index of the next free slot

◆ clear_anon_var()

void clear_anon_var ( anon_nasl_var * v)
static

◆ copy_anon_var()

void copy_anon_var ( anon_nasl_var * v1,
const anon_nasl_var * v2 )
static

◆ copy_array()

void copy_array ( nasl_array * a1,
const nasl_array * a2,
int copy_named )
static

◆ copy_ref_array()

tree_cell * copy_ref_array ( const tree_cell * c1)

◆ create_anon_var()

anon_nasl_var * create_anon_var ( tree_cell * val)
static

◆ create_named_var()

named_nasl_var * create_named_var ( const char * name,
tree_cell * val )
static

◆ decl_global_variables()

tree_cell * decl_global_variables ( lex_ctxt * lexic,
tree_cell * vars )

◆ decl_local_variables()

tree_cell * decl_local_variables ( lex_ctxt * lexic,
tree_cell * vars )

◆ dup_anon_var()

anon_nasl_var * dup_anon_var ( const anon_nasl_var * v)
static

◆ dup_named_var()

named_nasl_var * dup_named_var ( const named_nasl_var * v)
static

◆ free_anon_var()

void free_anon_var ( anon_nasl_var * v)
static

◆ free_array()

void free_array ( nasl_array * a)

Note: the function does not free the nasl_array structure. Do it if necessary

◆ free_var_chain()

void free_var_chain ( named_nasl_var * v)
static

◆ get_array_elem()

tree_cell * get_array_elem ( lex_ctxt * ctxt,
const char * name,
tree_cell * idx )

◆ get_int_var_by_name()

long int get_int_var_by_name ( lex_ctxt * lexic,
const char * name,
int defval )

◆ get_int_var_by_num()

long int get_int_var_by_num ( lex_ctxt * lexic,
int num,
int defval )

◆ get_str_var_by_name()

char * get_str_var_by_name ( lex_ctxt * lexic,
const char * name )

◆ get_str_var_by_num()

char * get_str_var_by_num ( lex_ctxt * lexic,
int num )

◆ get_var_by_name()

named_nasl_var * get_var_by_name ( nasl_array * a,
const char * s )
static

◆ get_var_name()

const char * get_var_name ( anon_nasl_var * v)
static

◆ get_var_ref_by_name()

named_nasl_var * get_var_ref_by_name ( lex_ctxt * ctxt,
const char * name,
int climb )
static

This function climbs up in the context list.

◆ get_var_ref_by_num()

anon_nasl_var * get_var_ref_by_num ( lex_ctxt * ctxt,
int num )
static

◆ get_var_size()

int get_var_size ( const anon_nasl_var * v)
static

◆ get_var_size_by_name()

int get_var_size_by_name ( lex_ctxt * lexic,
const char * name )

◆ get_var_size_by_num()

int get_var_size_by_num ( lex_ctxt * lexic,
int num )

◆ get_var_type_by_name()

int get_var_type_by_name ( lex_ctxt * lexic,
const char * name )

◆ get_var_type_by_num()

int get_var_type_by_num ( lex_ctxt * lexic,
int num )

Returns NASL variable/cell type, VAR2_UNDEF if value is NULL.

◆ get_variable_by_name()

tree_cell * get_variable_by_name ( lex_ctxt * ctxt,
const char * name )

◆ hash_str()

int hash_str ( const char * s)
static

◆ hash_str2()

int hash_str2 ( const char * s,
int n )
Todo
Consider using GLibs string hash function.

◆ make_array_from_elems()

tree_cell * make_array_from_elems ( tree_cell * el)

make_array_from_list is used by the parser only The list of elements is freed after use

◆ nasl_affect()

tree_cell * nasl_affect ( tree_cell * lval,
tree_cell * rval )

◆ nasl_array_iterator()

nasl_iterator nasl_array_iterator ( void * ctxt,
tree_cell * c )

◆ nasl_get_var_by_num()

anon_nasl_var * nasl_get_var_by_num ( void * ctxt,
nasl_array * a,
int num,
int create )

◆ nasl_incr_variable()

tree_cell * nasl_incr_variable ( lex_ctxt * lexic,
tree_cell * tc,
int pre,
int val )

◆ nasl_iterate_array()

tree_cell * nasl_iterate_array ( nasl_iterator * it)

◆ nasl_read_var_ref()

tree_cell * nasl_read_var_ref ( lex_ctxt * lexic,
tree_cell * tc )

◆ var2cell()

tree_cell * var2cell ( anon_nasl_var * v)

◆ var2int()

long int var2int ( anon_nasl_var * v,
int defval )
static

◆ var2str()

const char * var2str ( anon_nasl_var * v)

Variable Documentation

◆ nasl_trace_fp

FILE* nasl_trace_fp
extern