OpenVAS Scanner 23.32.3
nasl_var.h File Reference
#include "nasl_tree.h"
Include dependency graph for nasl_var.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  st_nasl_string
struct  st_nasl_array
struct  st_a_nasl_var
struct  st_n_nasl_var
struct  nasl_iterator

Macros

#define VAR_NAME_HASH   17

Typedefs

typedef struct st_nasl_string nasl_string_t
typedef struct st_nasl_array nasl_array
typedef struct st_a_nasl_var anon_nasl_var
typedef struct st_n_nasl_var named_nasl_var

Enumerations

enum  {
  VAR2_UNDEF = 0 , VAR2_INT , VAR2_STRING , VAR2_DATA ,
  VAR2_ARRAY
}

Functions

tree_cellnasl_affect (tree_cell *, tree_cell *)
void clear_unnamed_var (anon_nasl_var *)
const char * var2str (anon_nasl_var *)
anon_nasl_varnasl_get_var_by_num (void *, nasl_array *, int, int)
nasl_iterator nasl_array_iterator (void *, tree_cell *)
tree_cellnasl_iterate_array (nasl_iterator *)
named_nasl_varget_var_by_name (nasl_array *a, const char *s)
int add_var_to_list (nasl_array *, int, const anon_nasl_var *)
int add_var_to_array (nasl_array *, char *, const anon_nasl_var *)
int array_max_index (nasl_array *)
void free_array (nasl_array *)
tree_cellcopy_ref_array (const tree_cell *)
int hash_str2 (const char *, int)
tree_cellvar2cell (anon_nasl_var *)
tree_cellmake_array_from_elems (tree_cell *)
char * array2str (const nasl_array *)

Macro Definition Documentation

◆ VAR_NAME_HASH

Typedef Documentation

◆ anon_nasl_var

typedef struct st_a_nasl_var anon_nasl_var

◆ named_nasl_var

typedef struct st_n_nasl_var named_nasl_var

◆ nasl_array

typedef struct st_nasl_array nasl_array

◆ nasl_string_t

typedef struct st_nasl_string nasl_string_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
VAR2_UNDEF 
VAR2_INT 
VAR2_STRING 
VAR2_DATA 
VAR2_ARRAY 

Definition at line 13 of file nasl_var.h.

14{
15 VAR2_UNDEF = 0,
20};
@ VAR2_STRING
Definition nasl_var.h:17
@ VAR2_DATA
Definition nasl_var.h:18
@ VAR2_ARRAY
Definition nasl_var.h:19
@ VAR2_INT
Definition nasl_var.h:16
@ VAR2_UNDEF
Definition nasl_var.h:15

Function Documentation

◆ add_var_to_array()

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

Definition at line 1277 of file nasl_var.c.

1278 {
1279 named_nasl_var *v2;
1280 int h = hash_str (name);
1281
1282 if (a->hash_elt == NULL)
1283 {
1284 a->hash_elt = g_malloc0 (VAR_NAME_HASH * sizeof (named_nasl_var *));
1285 }
1286
1287 v2 = g_malloc0 (sizeof (named_nasl_var));
1288 v2->var_name = g_strdup (name);
1289 v2->u.var_type = VAR2_UNDEF;
1290 v2->next_var = a->hash_elt[h];
1291 a->hash_elt[h] = v2;
1292
1293 copy_anon_var (&(v2->u), v);
1294 return 0;
1295 }
const char * name
Definition nasl_init.c:439
static int hash_str(const char *s)
Definition nasl_var.c:37
static void copy_anon_var(anon_nasl_var *v1, const anon_nasl_var *v2)
Definition nasl_var.c:427
#define VAR_NAME_HASH
Definition nasl_var.h:22
struct st_n_nasl_var named_nasl_var
char * var_name
Definition nasl_var.h:58
struct st_n_nasl_var * next_var
Definition nasl_var.h:62
struct st_a_nasl_var u
Definition nasl_var.h:56
struct st_n_nasl_var ** hash_elt
Definition nasl_var.h:36

References copy_anon_var(), st_nasl_array::hash_elt, hash_str(), name, st_n_nasl_var::next_var, st_n_nasl_var::u, VAR2_UNDEF, st_n_nasl_var::var_name, VAR_NAME_HASH, and st_a_nasl_var::var_type.

Referenced by get_kb_list(), get_tcp_option(), get_tcp_v6_option(), make_array_from_elems(), nasl_localtime(), nasl_make_array(), and nasl_notus().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_var_to_list()

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

Definition at line 1245 of file nasl_var.c.

1246 {
1247 anon_nasl_var *v2 = NULL;
1248
1249 if (i < 0)
1250 {
1251 nasl_perror (
1252 NULL, "add_var_to_list: negative index are not (yet) supported\n");
1253 return -1;
1254 }
1255
1256 if (i >= a->max_idx)
1257 {
1258 a->num_elt = g_realloc (a->num_elt, sizeof (anon_nasl_var *) * (i + 1));
1259 bzero (a->num_elt + a->max_idx,
1260 sizeof (anon_nasl_var *) * (i + 1 - a->max_idx));
1261 a->max_idx = i + 1;
1262 }
1263
1264 if (a->num_elt)
1265 {
1266 free_anon_var (a->num_elt[i]);
1267 v2 = dup_anon_var (v); /* May return NULL */
1268 a->num_elt[i] = v2;
1269 }
1270 if (v2 == NULL)
1271 return 0;
1272 else
1273 return 1;
1274 }
void nasl_perror(lex_ctxt *lexic, char *msg,...)
Definition nasl_debug.c:105
static void free_anon_var(anon_nasl_var *)
Definition nasl_var.c:384
static anon_nasl_var * dup_anon_var(const anon_nasl_var *v)
Definition nasl_var.c:466
struct st_a_nasl_var anon_nasl_var
struct st_a_nasl_var ** num_elt
Definition nasl_var.h:35

References dup_anon_var(), free_anon_var(), st_nasl_array::max_idx, nasl_perror(), and st_nasl_array::num_elt.

Referenced by array_from_snmp_error(), array_from_snmp_result(), crypt_data(), get_hostnames(), make_array_from_elems(), nasl_bf_cbc(), nasl_eregmatch(), nasl_get_sock_info(), nasl_keys(), nasl_make_array(), nasl_make_list(), nasl_notus(), nasl_split(), and resolve_hostname_to_multiple_ips().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ array2str()

char * array2str ( const nasl_array * a)

Definition at line 990 of file nasl_var.c.

991 {
992 GString *str;
993 int i, n1 = 0;
994 anon_nasl_var *u;
996
997 if (a == NULL)
998 return NULL;
999
1000 str = g_string_new ("[ ");
1001 if (a->num_elt != NULL)
1002 for (i = 0; i < a->max_idx; i++)
1003 if ((u = a->num_elt[i]) != NULL && u->var_type != VAR2_UNDEF)
1004 {
1005 if (n1 > 0)
1006 g_string_append (str, ", ");
1007 n1++;
1008 switch (u->var_type)
1009 {
1010 case VAR2_INT:
1011 g_string_append_printf (str, "%d: %ld", i, u->v.v_int);
1012 break;
1013 case VAR2_STRING:
1014 case VAR2_DATA:
1015 if (u->v.v_str.s_siz < 64)
1016 g_string_append_printf (str, "%d: '%s'", i, u->v.v_str.s_val);
1017 else
1018 g_string_append_printf (str, "%d: '%s'...", i,
1019 u->v.v_str.s_val);
1020 break;
1021 default:
1022 g_string_append_printf (str, "%d: ????", i);
1023 break;
1024 }
1025 }
1026
1027 if (a->hash_elt != NULL)
1028 for (i = 0; i < VAR_NAME_HASH; i++)
1029 for (v = a->hash_elt[i]; v != NULL; v = v->next_var)
1030 if (v->u.var_type != VAR2_UNDEF)
1031 {
1032 u = &v->u;
1033 if (n1 > 0)
1034 g_string_append (str, ", ");
1035 n1++;
1036 switch (u->var_type)
1037 {
1038 case VAR2_INT:
1039 g_string_append_printf (str, "%s: %ld", v->var_name,
1040 u->v.v_int);
1041 break;
1042 case VAR2_STRING:
1043 case VAR2_DATA:
1044 if (u->v.v_str.s_siz < 64)
1045 g_string_append_printf (str, "%s: '%s'", v->var_name,
1046 u->v.v_str.s_val);
1047 else
1048 g_string_append_printf (str, "%s: '%s'...", v->var_name,
1049 u->v.v_str.s_val);
1050 break;
1051 default:
1052 g_string_append_printf (str, "%s: ????", v->var_name);
1053 break;
1054 }
1055 }
1056
1057 g_string_append (str, " ]");
1058 return g_string_free (str, FALSE);
1059 }
nasl_string_t v_str
Definition nasl_var.h:47
union st_a_nasl_var::@154137074032032170165360023270032033276061363156 v
long int v_int
Definition nasl_var.h:48
unsigned char * s_val
Definition nasl_var.h:26

References st_nasl_array::hash_elt, st_nasl_array::max_idx, st_n_nasl_var::next_var, st_nasl_array::num_elt, st_nasl_string::s_siz, st_nasl_string::s_val, st_n_nasl_var::u, st_a_nasl_var::v, st_a_nasl_var::v_int, st_a_nasl_var::v_str, VAR2_DATA, VAR2_INT, VAR2_STRING, VAR2_UNDEF, st_n_nasl_var::var_name, VAR_NAME_HASH, and st_a_nasl_var::var_type.

Referenced by cell2str(), and var2str().

Here is the caller graph for this function:

◆ 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

Definition at line 1302 of file nasl_var.c.

1303 {
1304 int i;
1305
1306 for (i = a->max_idx - 1; i >= 0; i--)
1307 if (a->num_elt[i] != NULL && a->num_elt[i]->var_type != VAR2_UNDEF)
1308 {
1309 /* Fixing max_index will realloc() at next store.
1310 * I am not sure it is a good idea
1311 * Wait and see */
1312 a->max_idx = i + 1;
1313 return i + 1;
1314 }
1315 return 0;
1316 }

References st_nasl_array::max_idx, st_nasl_array::num_elt, VAR2_UNDEF, and st_a_nasl_var::var_type.

Referenced by nasl_max_index(), nasl_rawstring(), nasl_strcat(), and nasl_string().

Here is the caller graph for this function:

◆ clear_unnamed_var()

void clear_unnamed_var ( anon_nasl_var * )

◆ copy_ref_array()

tree_cell * copy_ref_array ( const tree_cell * c1)

Definition at line 534 of file nasl_var.c.

535 {
536 tree_cell *c2;
537 nasl_array *a2;
538
539 if (c1 == NULL || c1 == FAKE_CELL || c1->type != REF_ARRAY)
540 return NULL;
541
543 c2->x.ref_val = a2 = g_malloc0 (sizeof (nasl_array));
544 copy_array (a2, c1->x.ref_val, 1);
545 return c2;
546 }
tree_cell * alloc_typed_cell(int typ)
Definition nasl_tree.c:25
@ DYN_ARRAY
Definition nasl_tree.h:90
@ REF_ARRAY
Definition nasl_tree.h:89
struct TC tree_cell
#define FAKE_CELL
Definition nasl_tree.h:110
static void copy_array(nasl_array *, const nasl_array *, int)
Definition nasl_var.c:493
struct st_nasl_array nasl_array
union TC::@332262321161220155002104006201360276211317150140 x
void * ref_val
Definition nasl_tree.h:105
short type
Definition nasl_tree.h:95

References alloc_typed_cell(), copy_array(), DYN_ARRAY, FAKE_CELL, REF_ARRAY, TC::ref_val, TC::type, and TC::x.

Referenced by nasl_return().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ free_array()

void free_array ( nasl_array * a)

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

Definition at line 339 of file nasl_var.c.

340 {
341 int i;
342
343 if (a == NULL)
344 return;
345 if (a->num_elt != NULL)
346 {
347 for (i = 0; i < a->max_idx; i++)
348 free_anon_var (a->num_elt[i]);
349 g_free (a->num_elt);
350 a->num_elt = NULL;
351 }
352 a->max_idx = 0;
353 if (a->hash_elt != NULL)
354 {
355 for (i = 0; i < VAR_NAME_HASH; i++)
356 free_var_chain (a->hash_elt[i]);
357 g_free (a->hash_elt);
358 a->hash_elt = NULL;
359 }
360 }
static void free_var_chain(named_nasl_var *)
Definition nasl_var.c:363

References free_anon_var(), free_var_chain(), st_nasl_array::hash_elt, st_nasl_array::max_idx, st_nasl_array::num_elt, and VAR_NAME_HASH.

Referenced by clear_anon_var(), copy_array(), free_anon_var(), free_lex_ctxt(), free_tree(), free_var_chain(), and nasl_exec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_var_by_name()

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

Definition at line 75 of file nasl_var.c.

76{
77 int h = hash_str (s);
79
80 if (a->hash_elt == NULL)
81 a->hash_elt = g_malloc0 (VAR_NAME_HASH * sizeof (named_nasl_var *));
82
83 for (v = a->hash_elt[h]; v != NULL; v = v->next_var)
84 if (v->var_name != NULL && strcmp (s, v->var_name) == 0)
85 return v;
86
87 v = g_malloc0 (sizeof (named_nasl_var));
88 v->var_name = g_strdup (s);
90 v->next_var = a->hash_elt[h];
91
92 a->hash_elt[h] = v;
93 return v;
94}

References st_nasl_array::hash_elt, hash_str(), st_n_nasl_var::next_var, st_n_nasl_var::u, VAR2_UNDEF, st_n_nasl_var::var_name, VAR_NAME_HASH, and st_a_nasl_var::var_type.

Referenced by get_array_elem(), and security_notus().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hash_str2()

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

Definition at line 23 of file nasl_var.c.

24{
25 unsigned long h = 0;
26 const char *p;
27
28 if (s == NULL)
29 return 0;
30
31 for (p = s; *p != '\0'; p++)
32 h = (h << 3) + (unsigned char) *p;
33 return h % n;
34}

Referenced by hash_str().

Here is the caller graph for this 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

Definition at line 1323 of file nasl_var.c.

1324 {
1325 int n;
1326 tree_cell *c, *c2;
1327 nasl_array *a;
1328 anon_nasl_var *v;
1329
1330 v = g_malloc0 (sizeof (anon_nasl_var));
1331 a = g_malloc0 (sizeof (nasl_array));
1332 /* Either the elements are all "named", or they are "numbered". No mix! */
1333 if (el->x.str_val == NULL) /* numbered */
1334 {
1335 for (n = 0, c = el; c != NULL; c = c->link[1])
1336 n++;
1337 a->max_idx = n;
1338 a->num_elt = g_malloc0 (sizeof (anon_nasl_var *) * n);
1339 a->hash_elt = NULL;
1340 }
1341 else
1342 {
1343 a->num_elt = NULL;
1344 a->hash_elt = g_malloc0 (VAR_NAME_HASH * sizeof (named_nasl_var *));
1345 }
1346
1347 for (n = 0, c = el; c != NULL; c = c->link[1])
1348 {
1349 c2 = c->link[0];
1350 if (c2 != NULL && c2 != FAKE_CELL)
1351 {
1352 switch (c2->type)
1353 {
1354 case CONST_INT:
1355 v->var_type = VAR2_INT;
1356 v->v.v_int = c2->x.i_val;
1357 break;
1358 case CONST_STR:
1359 case CONST_DATA:
1361 if (c2->x.str_val == NULL)
1362 {
1363 v->v.v_str.s_val = NULL;
1364 v->v.v_str.s_siz = 0;
1365 }
1366 else
1367 {
1368 v->v.v_str.s_siz = c2->size;
1369 v->v.v_str.s_val = (unsigned char *) c2->x.str_val;
1370 }
1371 break;
1372 default:
1373 nasl_perror (NULL,
1374 "make_array_from_list: unhandled cell type %s at "
1375 "position %d\n",
1376 nasl_type_name (c2->type), n);
1377 v->var_type = VAR2_UNDEF;
1378 break;
1379 }
1380 }
1381
1382 if (c->x.str_val == NULL)
1383 add_var_to_list (a, n++, v);
1384 else
1385 add_var_to_array (a, c->x.str_val, v);
1386 }
1387
1388 g_free (v);
1390 c->x.ref_val = a;
1391 deref_cell (el);
1392 return c;
1393 }
const char * nasl_type_name(int t)
Definition nasl_tree.c:343
void deref_cell(tree_cell *c)
Definition nasl_tree.c:178
@ CONST_DATA
Definition nasl_tree.h:82
@ CONST_STR
Definition nasl_tree.h:80
@ CONST_INT
Definition nasl_tree.h:79
int add_var_to_array(nasl_array *a, char *name, const anon_nasl_var *v)
Definition nasl_var.c:1277
int add_var_to_list(nasl_array *a, int i, const anon_nasl_var *v)
Definition nasl_var.c:1245
struct TC * link[4]
Definition nasl_tree.h:107
int size
Definition nasl_tree.h:99
long int i_val
Definition nasl_tree.h:104
char * str_val
Definition nasl_tree.h:103

References add_var_to_array(), add_var_to_list(), alloc_typed_cell(), CONST_DATA, CONST_INT, CONST_STR, deref_cell(), DYN_ARRAY, FAKE_CELL, st_nasl_array::hash_elt, TC::i_val, TC::link, st_nasl_array::max_idx, nasl_perror(), nasl_type_name(), st_nasl_array::num_elt, TC::ref_val, st_nasl_string::s_siz, st_nasl_string::s_val, TC::size, TC::str_val, TC::type, st_a_nasl_var::v, st_a_nasl_var::v_int, st_a_nasl_var::v_str, VAR2_DATA, VAR2_INT, VAR2_STRING, VAR2_UNDEF, VAR_NAME_HASH, st_a_nasl_var::var_type, and TC::x.

Referenced by yyparse().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nasl_affect()

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

Definition at line 697 of file nasl_var.c.

698 {
699 anon_nasl_var *v1 = NULL;
700
701 if (lval == NULL)
702 {
703 nasl_perror (NULL, "nasl_effect: invalid lvalue\n");
704 return NULL;
705 }
706
707 if (lval->type != REF_VAR)
708 {
709 nasl_perror (NULL, "nasl_affect: cannot affect to non variable %s\n",
710 nasl_type_name (lval->type));
711 return NULL;
712 }
713
714 v1 = lval->x.ref_val;
715 return affect_to_anon_var (v1, rval);
716 }
@ REF_VAR
Definition nasl_tree.h:88
static tree_cell * affect_to_anon_var(anon_nasl_var *v1, tree_cell *rval)
Definition nasl_var.c:551

References affect_to_anon_var(), nasl_perror(), nasl_type_name(), TC::ref_val, REF_VAR, TC::type, and TC::x.

Referenced by nasl_exec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nasl_array_iterator()

nasl_iterator nasl_array_iterator ( void * ctxt,
tree_cell * c )

Definition at line 1169 of file nasl_var.c.

1170 {
1171 nasl_iterator it;
1172 anon_nasl_var *v;
1173
1174 it.a = NULL;
1175 it.v = NULL;
1176 it.i1 = 0;
1177 it.iH = 0;
1178
1179 if (c == NULL || c == FAKE_CELL)
1180 return it;
1181
1182 if (c->type == REF_VAR)
1183 {
1184 v = c->x.ref_val;
1185 if (v == NULL || v->var_type != VAR2_ARRAY)
1186 return it;
1187 it.a = g_malloc0 (sizeof (nasl_array));
1188 copy_array (it.a, &v->v.v_arr, 1);
1189 }
1190 else if (c->type == REF_ARRAY || c->type == DYN_ARRAY)
1191 {
1192 it.a = g_malloc0 (sizeof (nasl_array));
1193 copy_array (it.a, c->x.ref_val, 1);
1194 }
1195 else
1196 {
1197 nasl_perror (ctxt, "nasl_array_iterator: unhandled type %d (0x%x)\n",
1198 c->type, c->type);
1199 }
1200
1201 return it;
1202 }
named_nasl_var * v
Definition nasl_var.h:70
nasl_array * a
Definition nasl_var.h:67
nasl_array v_arr
Definition nasl_var.h:49

References nasl_iterator::a, copy_array(), DYN_ARRAY, FAKE_CELL, nasl_iterator::i1, nasl_iterator::iH, nasl_perror(), REF_ARRAY, TC::ref_val, REF_VAR, TC::type, nasl_iterator::v, st_a_nasl_var::v, st_a_nasl_var::v_arr, VAR2_ARRAY, st_a_nasl_var::var_type, and TC::x.

Referenced by nasl_exec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nasl_get_var_by_num()

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

Definition at line 43 of file nasl_var.c.

44{
45 anon_nasl_var *v = NULL;
46
47 if (num < 0)
48 {
49 /* TBD: implement a min_index field, just like $[ in Perl */
50 nasl_perror (ctxt, "Negative integer index %d are not supported yet!\n",
51 num);
52 return NULL;
53 }
54
55 if (num < a->max_idx)
56 v = a->num_elt[num];
57 if (v != NULL || !create)
58 return v;
59
60 if (num >= a->max_idx)
61 {
62 a->num_elt = g_realloc (a->num_elt, sizeof (anon_nasl_var *) * (num + 1));
63 bzero (a->num_elt + a->max_idx,
64 sizeof (anon_nasl_var *) * (num + 1 - a->max_idx));
65 a->max_idx = num + 1;
66 }
67 v = g_malloc0 (sizeof (anon_nasl_var));
69
70 a->num_elt[num] = v;
71 return v;
72}

References st_nasl_array::max_idx, nasl_perror(), st_nasl_array::num_elt, VAR2_UNDEF, and st_a_nasl_var::var_type.

Referenced by get_array_elem(), nasl_keys(), nasl_make_array(), nasl_make_list(), nasl_max_index(), nasl_typeof(), and security_notus().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nasl_iterate_array()

tree_cell * nasl_iterate_array ( nasl_iterator * it)

Definition at line 1205 of file nasl_var.c.

1206 {
1207 anon_nasl_var *av;
1208
1209 if (it == NULL || it->a == NULL)
1210 return NULL;
1211
1212 if (it->i1 >= 0)
1213 {
1214 while (it->i1 < it->a->max_idx)
1215 {
1216 av = it->a->num_elt[it->i1++];
1217 if (av != NULL && av->var_type != VAR2_UNDEF)
1218 return var2cell (av);
1219 }
1220 it->i1 = -1;
1221 }
1222
1223 if (it->a->hash_elt == NULL)
1224 return NULL;
1225
1226 if (it->v != NULL)
1227 it->v = it->v->next_var;
1228 do
1229 {
1230 while (it->v == NULL)
1231 if (it->iH >= VAR_NAME_HASH)
1232 return NULL;
1233 else
1234 it->v = it->a->hash_elt[it->iH++];
1235
1236 while (it->v != NULL && it->v->u.var_type == VAR2_UNDEF)
1237 it->v = it->v->next_var;
1238 }
1239 while (it->v == NULL);
1240
1241 return var2cell (&it->v->u);
1242 }
tree_cell * var2cell(anon_nasl_var *v)
Definition nasl_var.c:168

References nasl_iterator::a, st_nasl_array::hash_elt, nasl_iterator::i1, nasl_iterator::iH, st_nasl_array::max_idx, st_n_nasl_var::next_var, st_nasl_array::num_elt, st_n_nasl_var::u, nasl_iterator::v, VAR2_UNDEF, var2cell(), VAR_NAME_HASH, and st_a_nasl_var::var_type.

Referenced by nasl_exec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ var2cell()

tree_cell * var2cell ( anon_nasl_var * v)

Definition at line 168 of file nasl_var.c.

169{
171 tc->x.ref_val = v; /* No need to free this later! */
172 return tc;
173}

References alloc_typed_cell(), TC::ref_val, REF_VAR, and TC::x.

Referenced by get_array_elem(), get_variable_by_name(), nasl_iterate_array(), and var_cmp().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ var2str()

const char * var2str ( anon_nasl_var * v)

Definition at line 1062 of file nasl_var.c.

1063 {
1064 if (v == NULL)
1065 return NULL;
1066
1067 if (v->string_form)
1068 return v->string_form;
1069 switch (v->var_type)
1070 {
1071 case VAR2_INT:
1072 v->string_form = g_strdup_printf ("%ld", v->v.v_int);
1073 break;
1074 case VAR2_STRING:
1075 case VAR2_DATA:
1076 v->string_form = g_malloc0 (v->v.v_str.s_siz + 1);
1077 memcpy (v->string_form,
1078 (char *) v->v.v_str.s_val ? (char *) v->v.v_str.s_val : "",
1079 v->v.v_str.s_siz + 1);
1080 break;
1081 case VAR2_UNDEF:
1082 break;
1083 case VAR2_ARRAY:
1084 v->string_form = array2str (&v->v.v_arr);
1085 break;
1086 default:
1087 v->string_form = g_strdup ("");
1088 break;
1089 }
1090 return v->string_form;
1091 }
char * array2str(const nasl_array *a)
Definition nasl_var.c:990
char * string_form
Definition nasl_var.h:51

References array2str(), st_nasl_string::s_siz, st_nasl_string::s_val, st_a_nasl_var::string_form, st_a_nasl_var::v, st_a_nasl_var::v_arr, st_a_nasl_var::v_int, st_a_nasl_var::v_str, VAR2_ARRAY, VAR2_DATA, VAR2_INT, VAR2_STRING, VAR2_UNDEF, and st_a_nasl_var::var_type.

Referenced by dump_tree(), get_str_var_by_name(), get_str_var_by_num(), nasl_make_array(), and nasl_pread().

Here is the call graph for this function:
Here is the caller graph for this function: