OpenVAS Scanner  22.7.9
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 *)
 
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

#define VAR_NAME_HASH   17

Definition at line 22 of file nasl_var.h.

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,
16  VAR2_INT,
18  VAR2_DATA,
20 };

Function Documentation

◆ add_var_to_array()

int add_var_to_array ( nasl_array ,
char *  ,
const anon_nasl_var  
)

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  }

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(), and nasl_make_array().

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 ,
int  ,
const anon_nasl_var  
)

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  }

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

Definition at line 993 of file nasl_var.c.

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

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 )

Definition at line 537 of file nasl_var.c.

538  {
539  tree_cell *c2;
540  nasl_array *a2;
541 
542  if (c1 == NULL || c1 == FAKE_CELL || c1->type != REF_ARRAY)
543  return NULL;
544 
546  c2->x.ref_val = a2 = g_malloc0 (sizeof (nasl_array));
547  copy_array (a2, c1->x.ref_val, 1);
548  return c2;
549  }

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 342 of file nasl_var.c.

343  {
344  int i;
345 
346  if (a == NULL)
347  return;
348  if (a->num_elt != NULL)
349  {
350  for (i = 0; i < a->max_idx; i++)
351  free_anon_var (a->num_elt[i]);
352  g_free (a->num_elt);
353  a->num_elt = NULL;
354  }
355  a->max_idx = 0;
356  if (a->hash_elt != NULL)
357  {
358  for (i = 0; i < VAR_NAME_HASH; i++)
359  free_var_chain (a->hash_elt[i]);
360  g_free (a->hash_elt);
361  a->hash_elt = NULL;
362  }
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:

◆ hash_str2()

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

Definition at line 26 of file nasl_var.c.

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

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:
1360  v->var_type = c2->type == CONST_STR ? VAR2_STRING : VAR2_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  }

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 ,
tree_cell  
)

Definition at line 700 of file nasl_var.c.

701  {
702  anon_nasl_var *v1 = NULL;
703 
704  if (lval == NULL)
705  {
706  nasl_perror (NULL, "nasl_effect: invalid lvalue\n");
707  return NULL;
708  }
709 
710  if (lval->type != REF_VAR)
711  {
712  nasl_perror (NULL, "nasl_affect: cannot affect to non variable %s\n",
713  nasl_type_name (lval->type));
714  return NULL;
715  }
716 
717  v1 = lval->x.ref_val;
718  return affect_to_anon_var (v1, rval);
719  }

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 *  ,
tree_cell  
)

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  }

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, st_a_nasl_var::v, nasl_iterator::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 *  ,
nasl_array ,
int  ,
int   
)

Definition at line 46 of file nasl_var.c.

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

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(), and nasl_typeof().

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 )

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  }

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 )

Definition at line 171 of file nasl_var.c.

172 {
174  tc->x.ref_val = v; /* No need to free this later! */
175  return tc;
176 }

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 )

Definition at line 1065 of file nasl_var.c.

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

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:
nasl_iterator::i1
int i1
Definition: nasl_var.h:68
st_a_nasl_var
Definition: nasl_var.h:40
nasl_type_name
const char * nasl_type_name(int t)
Definition: nasl_tree.c:346
dup_anon_var
static anon_nasl_var * dup_anon_var(const anon_nasl_var *v)
Definition: nasl_var.c:469
CONST_DATA
@ CONST_DATA
Definition: nasl_tree.h:82
VAR2_UNDEF
@ VAR2_UNDEF
Definition: nasl_var.h:15
TC::str_val
char * str_val
Definition: nasl_tree.h:103
copy_array
static void copy_array(nasl_array *, const nasl_array *, int)
Definition: nasl_var.c:496
CONST_STR
@ CONST_STR
Definition: nasl_tree.h:80
st_n_nasl_var
Definition: nasl_var.h:55
array2str
char * array2str(const nasl_array *a)
Definition: nasl_var.c:993
st_nasl_array::max_idx
int max_idx
Definition: nasl_var.h:34
st_a_nasl_var::v_arr
nasl_array v_arr
Definition: nasl_var.h:49
TC::x
union TC::@5 x
st_nasl_array::hash_elt
struct st_n_nasl_var ** hash_elt
Definition: nasl_var.h:36
DYN_ARRAY
@ DYN_ARRAY
Definition: nasl_tree.h:90
FAKE_CELL
#define FAKE_CELL
Definition: nasl_tree.h:110
st_n_nasl_var::var_name
char * var_name
Definition: nasl_var.h:58
st_a_nasl_var::v
union st_a_nasl_var::@7 v
st_a_nasl_var::v_str
nasl_string_t v_str
Definition: nasl_var.h:47
VAR2_STRING
@ VAR2_STRING
Definition: nasl_var.h:17
st_nasl_string::s_siz
int s_siz
Definition: nasl_var.h:27
name
const char * name
Definition: nasl_init.c:411
VAR2_DATA
@ VAR2_DATA
Definition: nasl_var.h:18
st_nasl_array
Definition: nasl_var.h:33
free_var_chain
static void free_var_chain(named_nasl_var *)
Definition: nasl_var.c:366
VAR2_INT
@ VAR2_INT
Definition: nasl_var.h:16
nasl_iterator::v
named_nasl_var * v
Definition: nasl_var.h:70
st_n_nasl_var::next_var
struct st_n_nasl_var * next_var
Definition: nasl_var.h:62
affect_to_anon_var
static tree_cell * affect_to_anon_var(anon_nasl_var *v1, tree_cell *rval)
Definition: nasl_var.c:554
nasl_iterator::iH
int iH
Definition: nasl_var.h:69
nasl_perror
void nasl_perror(lex_ctxt *lexic, char *msg,...)
Definition: nasl_debug.c:111
copy_anon_var
static void copy_anon_var(anon_nasl_var *v1, const anon_nasl_var *v2)
Definition: nasl_var.c:430
add_var_to_array
int add_var_to_array(nasl_array *a, char *name, const anon_nasl_var *v)
Definition: nasl_var.c:1277
TC::size
int size
Definition: nasl_tree.h:99
var2cell
tree_cell * var2cell(anon_nasl_var *v)
Definition: nasl_var.c:171
VAR2_ARRAY
@ VAR2_ARRAY
Definition: nasl_var.h:19
TC::ref_val
void * ref_val
Definition: nasl_tree.h:105
st_a_nasl_var::var_type
int var_type
Definition: nasl_var.h:41
TC
Definition: nasl_tree.h:94
TC::type
short type
Definition: nasl_tree.h:95
TC::link
struct TC * link[4]
Definition: nasl_tree.h:107
REF_VAR
@ REF_VAR
Definition: nasl_tree.h:88
CONST_INT
@ CONST_INT
Definition: nasl_tree.h:79
nasl_iterator::a
nasl_array * a
Definition: nasl_var.h:67
hash_str
static int hash_str(const char *s)
Definition: nasl_var.c:40
nasl_iterator
Definition: nasl_var.h:66
add_var_to_list
int add_var_to_list(nasl_array *a, int i, const anon_nasl_var *v)
Definition: nasl_var.c:1245
st_a_nasl_var::v_int
long int v_int
Definition: nasl_var.h:48
REF_ARRAY
@ REF_ARRAY
Definition: nasl_tree.h:89
free_anon_var
static void free_anon_var(anon_nasl_var *)
Definition: nasl_var.c:387
deref_cell
void deref_cell(tree_cell *c)
Definition: nasl_tree.c:181
alloc_typed_cell
tree_cell * alloc_typed_cell(int typ)
Definition: nasl_tree.c:28
st_n_nasl_var::u
struct st_a_nasl_var u
Definition: nasl_var.h:56
VAR_NAME_HASH
#define VAR_NAME_HASH
Definition: nasl_var.h:22
st_nasl_string::s_val
unsigned char * s_val
Definition: nasl_var.h:26
TC::i_val
long int i_val
Definition: nasl_tree.h:104
st_nasl_array::num_elt
struct st_a_nasl_var ** num_elt
Definition: nasl_var.h:35