OpenVAS Scanner  21.4.1
Functions | Variables
nasl_var.c File Reference
#include "nasl_var.h"
#include "exec.h"
#include "nasl_debug.h"
#include "nasl_func.h"
#include "nasl_global_ctxt.h"
#include "nasl_lex_ctxt.h"
#include "nasl_tree.h"
#include <glib.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. More...
 
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)
 
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. More...
 
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()

static 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)

◆ copy_anon_var()

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

◆ copy_array()

static 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()

static anon_nasl_var* create_anon_var ( tree_cell val)
static

◆ create_named_var()

static 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()

static anon_nasl_var* dup_anon_var ( const anon_nasl_var v)
static

◆ dup_named_var()

static named_nasl_var* dup_named_var ( const named_nasl_var v)
static

◆ free_anon_var()

static 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()

static 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()

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

◆ get_var_name()

static const char* get_var_name ( anon_nasl_var v)
static

◆ get_var_ref_by_name()

static 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()

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

◆ get_var_size()

static 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()

static 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()

static 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