OpenVAS Scanner 23.40.3
nasl_tree.c File Reference
#include "nasl_tree.h"
#include "nasl_debug.h"
#include "nasl_var.h"
#include <glib.h>
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for nasl_tree.c:

Go to the source code of this file.

Functions

static tree_cellalloc_tree_cell ()
tree_cellalloc_typed_cell (int typ)
tree_cellalloc_RE_cell (int lnb, int t, tree_cell *l, char *re_str, int *err_c)
tree_cellalloc_expr_cell (int lnb, int t, tree_cell *l, tree_cell *r)
tree_celldup_cell (const tree_cell *tc)
static void free_tree (tree_cell *c)
void ref_cell (tree_cell *c)
void deref_cell (tree_cell *c)
static void prefix (int n, int i)
char * dump_cell_val (const tree_cell *c)
static void dump_tree (const tree_cell *c, int n, int idx)
const char * nasl_type_name (int t)
void nasl_dump_tree (const tree_cell *c)
char * get_line_nb (const tree_cell *c)
int nasl_is_leaf (const tree_cell *pc)
int cell_type (const tree_cell *c)

Variables

static char * node_names []

Function Documentation

◆ alloc_expr_cell()

tree_cell * alloc_expr_cell ( int lnb,
int t,
tree_cell * l,
tree_cell * r )

Definition at line 60 of file nasl_tree.c.

61{
63 c->line_nb = lnb;
64 c->type = t;
65 c->link[0] = l;
66 c->link[1] = r;
67
68 return c;
69}
static tree_cell * alloc_tree_cell()
Definition nasl_tree.c:19
struct TC tree_cell
struct TC * link[4]
Definition nasl_tree.h:107
short line_nb
Definition nasl_tree.h:96
short type
Definition nasl_tree.h:95

References alloc_tree_cell(), TC::line_nb, TC::link, and TC::type.

Referenced by get_array_elem(), int2cell(), nasl_exec(), and yyparse().

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

◆ alloc_RE_cell()

tree_cell * alloc_RE_cell ( int lnb,
int t,
tree_cell * l,
char * re_str,
int * err_c )

Definition at line 33 of file nasl_tree.c.

34{
35 regex_t *re = g_malloc0 (sizeof (regex_t));
36 int e;
37
39 c->line_nb = lnb;
40 c->type = t; /* We could check the type... */
41 c->link[0] = l;
42 c->link[1] = FAKE_CELL;
43 e = regcomp (re, re_str, REG_EXTENDED | REG_NOSUB | REG_ICASE);
44 if (!e)
45 c->x.ref_val = re;
46 else
47 {
48 char errbuf[100];
49 regerror (e, re, errbuf, sizeof (errbuf));
50 nasl_perror (NULL, "Line %d: Cannot compile regex: %s (error %d: %s)\n",
51 lnb, re_str, e, errbuf);
52 g_free (re);
53 *err_c = *err_c + 1;
54 }
55 g_free (re_str);
56 return c;
57}
void nasl_perror(lex_ctxt *lexic, char *msg,...)
Definition nasl_debug.c:105
#define FAKE_CELL
Definition nasl_tree.h:110
union TC::@332262321161220155002104006201360276211317150140 x
void * ref_val
Definition nasl_tree.h:105

References alloc_tree_cell(), FAKE_CELL, TC::line_nb, TC::link, nasl_perror(), TC::ref_val, TC::type, and TC::x.

Referenced by yyparse().

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

◆ alloc_tree_cell()

tree_cell * alloc_tree_cell ( )
static

Definition at line 19 of file nasl_tree.c.

20{
21 return g_malloc0 (sizeof (tree_cell));
22}

Referenced by alloc_expr_cell(), alloc_RE_cell(), alloc_typed_cell(), and dup_cell().

Here is the caller graph for this function:

◆ alloc_typed_cell()

tree_cell * alloc_typed_cell ( int typ)

Definition at line 25 of file nasl_tree.c.

26{
28 c->type = typ;
29 return c;
30}

References alloc_tree_cell(), and TC::type.

Referenced by __attribute__(), _http2_req(), _http_req(), array_from_snmp_error(), array_from_snmp_result(), cgibin(), copy_ref_array(), crypt_data(), encrypt_stream_data(), forge_icmp_packet(), forge_icmp_v6_packet(), forge_igmp_packet(), forge_igmp_v6_packet(), forge_ip_packet(), forge_ip_v6_packet(), forge_tcp_packet(), forge_tcp_v6_packet(), forge_udp_packet(), forge_udp_v6_packet(), get_host_ip(), get_host_kb_index(), get_host_open_port(), get_hostname(), get_hostname_source(), get_hostnames(), get_icmp_element(), get_icmp_v6_element(), get_ip_element(), get_ip_v6_element(), get_kb_item(), get_kb_list(), get_port_state(), get_port_transport(), get_script_oid(), get_tcp_element(), get_tcp_option(), get_tcp_v6_element(), get_tcp_v6_option(), get_udp_element(), get_udp_port_state(), get_udp_v6_element(), get_variable_by_name(), host_reverse_lookup(), insert_ip_options(), insert_tcp_options(), insert_tcp_v6_options(), make_array_from_elems(), nasl_bf_cbc(), nasl_bn_random(), nasl_chomp(), nasl_cipher(), nasl_close_stream_cipher(), nasl_crap(), nasl_dec2str(), nasl_defined_func(), nasl_dh_compute_key(), nasl_dh_generate_key(), nasl_display(), nasl_do_exit(), nasl_egrep(), nasl_end_denial(), nasl_ereg(), nasl_ereg_replace(), nasl_eregmatch(), nasl_exec(), nasl_file_close(), nasl_file_open(), nasl_file_read(), nasl_file_seek(), nasl_file_stat(), nasl_file_write(), nasl_find_in_path(), nasl_forge_frame(), nasl_fread(), nasl_ftp_get_pasv_address(), nasl_ftp_log_in(), nasl_fwrite(), nasl_gcrypt_hash(), nasl_get_byte_order(), nasl_get_local_mac_address_from_ip(), nasl_get_mtu(), nasl_get_preference(), nasl_get_sign(), nasl_get_sock_info(), nasl_get_source_port(), nasl_get_tmp_dir(), nasl_gettimeofday(), nasl_gunzip(), nasl_gzip(), nasl_hex(), nasl_hexstr(), nasl_hmac_sha256(), nasl_http2_close_handle(), nasl_http2_get_response_code(), nasl_http2_handle(), nasl_http2_set_custom_header(), nasl_incr_variable(), nasl_insert_hexzeros(), nasl_insstr(), nasl_int(), nasl_islocalhost(), nasl_islocalnet(), nasl_isnull(), nasl_isotime_add(), nasl_isotime_is_valid(), nasl_isotime_now(), nasl_isotime_print(), nasl_isotime_scan(), nasl_join_multicast_group(), nasl_keyexchg(), nasl_keys(), nasl_lint(), nasl_lm_owf_gen(), nasl_localtime(), nasl_mac(), nasl_make_array(), nasl_make_list(), nasl_match(), nasl_max_index(), nasl_mktime(), nasl_notus_error(), nasl_notus_type(), nasl_ntlm2_response(), nasl_ntlm_response(), nasl_ntlmv1_hash(), nasl_ntlmv2_hash(), nasl_ntlmv2_response(), nasl_ntv2_owf_gen(), nasl_okrb5_add_realm(), nasl_okrb5_error_code_to_string(), nasl_okrb5_find_kdc(), nasl_okrb5_gss_init(), nasl_okrb5_gss_prepare_context(), nasl_okrb5_gss_update_context(), nasl_okrb5_gss_update_context_needs_more(), nasl_okrb5_is_failure(), nasl_okrb5_is_success(), nasl_open_privileged_socket(), nasl_open_sock_kdc(), nasl_open_sock_tcp_bufsz(), nasl_open_sock_udp(), nasl_open_stream_cipher(), nasl_ord(), nasl_pcap_next(), nasl_pem_to(), nasl_pread(), nasl_prf(), nasl_rand(), nasl_rawstring(), nasl_read_var_ref(), nasl_recv(), nasl_recv_line(), nasl_rsa_private_decrypt(), nasl_rsa_public_decrypt(), nasl_rsa_public_encrypt(), nasl_rsa_sign(), nasl_same_host(), nasl_scanner_get_port(), nasl_send(), nasl_send_arp_request(), nasl_send_capture(), nasl_send_frame(), nasl_send_packet(), nasl_send_v6packet(), nasl_sftp_enabled_check(), nasl_smb3kdf(), nasl_smb_close(), nasl_smb_connect(), nasl_smb_file_group_sid(), nasl_smb_file_owner_sid(), nasl_smb_file_SDDL(), nasl_smb_file_trustee_rights(), nasl_smb_sign(), nasl_smb_versioninfo(), nasl_socket_cert_verify(), nasl_socket_check_ssl_safe_renegotiation(), nasl_socket_get_cert(), nasl_socket_get_error(), nasl_socket_get_ssl_ciphersuite(), nasl_socket_get_ssl_session_id(), nasl_socket_get_ssl_version(), nasl_socket_negotiate_ssl(), nasl_socket_ssl_do_handshake(), nasl_split(), nasl_ssh_connect(), nasl_ssh_execute_netconf_subsystem(), nasl_ssh_get_auth_methods(), nasl_ssh_get_host_key(), nasl_ssh_get_issue_banner(), nasl_ssh_get_server_banner(), nasl_ssh_get_sock(), nasl_ssh_login_interactive(), nasl_ssh_login_interactive_pass(), nasl_ssh_request_exec(), nasl_ssh_session_id_from_sock(), nasl_ssh_shell_open(), nasl_ssh_shell_read(), nasl_ssh_shell_write(), nasl_ssh_userauth(), nasl_str_replace(), nasl_strcat(), nasl_stridx(), nasl_string(), nasl_strlen(), nasl_strstr(), nasl_substr(), nasl_target_is_ipv6(), nasl_tcp_ping(), nasl_tcp_v6_ping(), nasl_telnet_init(), nasl_this_host(), nasl_this_host_name(), nasl_tolower(), nasl_toupper(), nasl_typeof(), nasl_unixtime(), nasl_vendor_version(), nasl_win_cmd_exec(), nasl_wmi_close(), nasl_wmi_connect(), nasl_wmi_connect_reg(), nasl_wmi_connect_rsop(), nasl_wmi_query(), nasl_wmi_query_rsop(), nasl_wmi_reg_create_key(), nasl_wmi_reg_delete_key(), nasl_wmi_reg_enum_key(), nasl_wmi_reg_enum_value(), nasl_wmi_reg_get_bin_val(), nasl_wmi_reg_get_dword_val(), nasl_wmi_reg_get_ex_string_val(), nasl_wmi_reg_get_mul_string_val(), nasl_wmi_reg_get_qword_val(), nasl_wmi_reg_get_sz(), nasl_wmi_reg_set_dword_val(), nasl_wmi_reg_set_ex_string_val(), nasl_wmi_reg_set_qword_val(), nasl_wmi_reg_set_string_val(), nasl_wmi_versioninfo(), okrb5_slice_to_tree_cell(), parse_notus(), parse_skiron(), resolve_hostname(), resolve_hostname_to_multiple_ips(), safe_checks(), script_get_preference(), script_get_preference_file_content(), script_get_preference_file_location(), set_ip_elements(), set_ip_v6_elements(), set_tcp_elements(), set_tcp_v6_elements(), set_udp_elements(), set_udp_v6_elements(), var2cell(), and yyparse().

Here is the call graph for this function:

◆ cell_type()

int cell_type ( const tree_cell * c)

Definition at line 404 of file nasl_tree.c.

405 {
406 if (c == NULL || c == FAKE_CELL)
407 return 0;
408 else
409 return c->type;
410 }

References FAKE_CELL, and TC::type.

Referenced by cell_cmp().

Here is the caller graph for this function:

◆ deref_cell()

void deref_cell ( tree_cell * c)

Definition at line 178 of file nasl_tree.c.

179{
180 if (c == NULL || c == FAKE_CELL)
181 return;
182 if (--c->ref_count < 0)
183 free_tree (c);
184}
static void free_tree(tree_cell *c)
Definition nasl_tree.c:105
short ref_count
Definition nasl_tree.h:98

References FAKE_CELL, free_tree(), and TC::ref_count.

Referenced by cell2atom(), cell2bool(), cell2int3(), cell2str(), cell_cmp(), create_anon_var(), create_named_var(), exec_nasl_script(), free_lex_ctxt(), free_tree(), get_kb_list(), get_tcp_v6_element(), make_array_from_elems(), nasl_clean_ctx(), nasl_display(), nasl_exec(), nasl_func_call(), nasl_pread(), nasl_read_var_ref(), nasl_return(), nasl_start_denial(), nasl_strcat(), parse_notus(), var_cmp(), and yyparse().

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

◆ dump_cell_val()

char * dump_cell_val ( const tree_cell * c)

Definition at line 231 of file nasl_tree.c.

232{
233 static char txt[80];
234
235 if (c == NULL)
236 return "NULL";
237 else if (c == FAKE_CELL)
238 return "FAKE";
239 else
240 switch (c->type)
241 {
242 case CONST_INT:
243 snprintf (txt, sizeof (txt), "%ld", c->x.i_val);
244 break;
245 case CONST_STR:
246 case CONST_DATA: /* Beurk (English: Yuck) */
247 if ((unsigned int) c->size >= sizeof (txt) + 2)
248 {
249 snprintf (txt, sizeof (txt), "\"%s", c->x.str_val);
250 strcpy (txt + (sizeof (txt) - 5), "...\"");
251 }
252 else
253 snprintf (txt, sizeof (txt), "\"%s\"", c->x.str_val);
254 break;
255 default:
256 snprintf (txt, sizeof (txt), "???? (%s)", nasl_type_name (c->type));
257 break;
258 }
259 return txt;
260}
const char * nasl_type_name(int t)
Definition nasl_tree.c:343
@ CONST_DATA
Definition nasl_tree.h:82
@ CONST_STR
Definition nasl_tree.h:80
@ CONST_INT
Definition nasl_tree.h:79
long int i_val
Definition nasl_tree.h:104
long int size
Definition nasl_tree.h:99
char * str_val
Definition nasl_tree.h:103

References CONST_DATA, CONST_INT, CONST_STR, FAKE_CELL, TC::i_val, nasl_type_name(), TC::size, TC::str_val, TC::type, and TC::x.

Referenced by nasl_func_call().

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

◆ dump_tree()

void dump_tree ( const tree_cell * c,
int n,
int idx )
static

Definition at line 263 of file nasl_tree.c.

264{
265 int i;
266
267 if (c == NULL)
268 return;
269
270 prefix (n, idx);
271
272 if (c == FAKE_CELL)
273 {
274 puts ("* FAKE *");
275 return;
276 }
277
278 if (c->line_nb > 0)
279 printf ("L%d: ", c->line_nb);
280
281 if (c->type < 0
282 || (unsigned int) c->type >= sizeof (node_names) / sizeof (node_names[0]))
283 printf ("* UNKNOWN %d (0x%x)*\n", c->type, c->type);
284 else
285 printf ("%s (%d)\n", node_names[c->type], c->type);
286
287 prefix (n, idx);
288 printf ("Ref_count=%d", c->ref_count);
289 if (c->size > 0)
290 {
291 /*prefix(n, idx); */
292 printf ("\tSize=%ld (0x%lx)", c->size, c->size);
293 }
294 putchar ('\n');
295
296 switch (c->type)
297 {
298 case CONST_INT:
299 prefix (n, 0);
300 printf ("Val=%ld\n", c->x.i_val);
301 break;
302
303 case CONST_STR:
304 case CONST_DATA:
305 case NODE_VAR:
306 case NODE_FUN_DEF:
307 case NODE_FUN_CALL:
308 case NODE_DECL:
309 case NODE_ARG:
310 case NODE_ARRAY_EL:
311 case ARRAY_ELEM:
312 prefix (n, 0);
313 if (c->x.str_val == NULL)
314 printf ("Val=(null)\n");
315 else
316 printf ("Val=\"%s\"\n", c->x.str_val);
317 break;
318 case REF_VAR:
319 prefix (n, 0);
320 if (c->x.ref_val == NULL)
321 printf ("Ref=(null)\n");
322 else
323 {
324 named_nasl_var *v = c->x.ref_val;
325 printf ("Ref=(type=%d, name=%s, value=%s)\n", v->u.var_type,
326 v->var_name != NULL ? v->var_name : "(null)",
327 var2str (&v->u));
328 }
329 break;
330
331 case REF_ARRAY:
332 case DYN_ARRAY:
333 break;
334 }
335
336 for (i = 0; i < 4; i++)
337 {
338 dump_tree (c->link[i], n + 3, i + 1);
339 }
340}
static char * node_names[]
Definition nasl_tree.c:188
static void dump_tree(const tree_cell *c, int n, int idx)
Definition nasl_tree.c:263
static void prefix(int n, int i)
Definition nasl_tree.c:219
@ NODE_ARRAY_EL
Definition nasl_tree.h:29
@ NODE_FUN_CALL
Definition nasl_tree.h:22
@ NODE_VAR
Definition nasl_tree.h:31
@ NODE_ARG
Definition nasl_tree.h:24
@ NODE_FUN_DEF
Definition nasl_tree.h:21
@ ARRAY_ELEM
Definition nasl_tree.h:85
@ REF_VAR
Definition nasl_tree.h:88
@ DYN_ARRAY
Definition nasl_tree.h:90
@ NODE_DECL
Definition nasl_tree.h:23
@ REF_ARRAY
Definition nasl_tree.h:89
const char * var2str(anon_nasl_var *v)
Definition nasl_var.c:1062
struct st_n_nasl_var named_nasl_var
char * var_name
Definition nasl_var.h:58
struct st_a_nasl_var u
Definition nasl_var.h:56

References ARRAY_ELEM, CONST_DATA, CONST_INT, CONST_STR, dump_tree(), DYN_ARRAY, FAKE_CELL, TC::i_val, TC::line_nb, TC::link, NODE_ARG, NODE_ARRAY_EL, NODE_DECL, NODE_FUN_CALL, NODE_FUN_DEF, node_names, NODE_VAR, prefix(), REF_ARRAY, TC::ref_count, TC::ref_val, REF_VAR, TC::size, TC::str_val, TC::type, st_n_nasl_var::u, var2str(), st_n_nasl_var::var_name, st_a_nasl_var::var_type, and TC::x.

Referenced by dump_tree(), and nasl_dump_tree().

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

◆ dup_cell()

tree_cell * dup_cell ( const tree_cell * tc)

Definition at line 72 of file nasl_tree.c.

73{
74 tree_cell *r;
75 int i;
76
77 if (tc == NULL)
78 return NULL;
79 else if (tc == FAKE_CELL)
80 return FAKE_CELL;
81
82 r = alloc_tree_cell ();
83 r->line_nb = tc->line_nb;
84 r->type = tc->type;
85 r->size = tc->size;
86
87 switch (tc->type)
88 {
89 case CONST_STR:
90 case CONST_DATA:
91 r->x.str_val = g_malloc0 (tc->size + 1);
92 memcpy (r->x.str_val, tc->x.str_val, tc->size);
93 break;
94 default:
95 r->x = tc->x;
96 break;
97 }
98
99 for (i = 0; i < 4; i++)
100 r->link[i] = dup_cell (tc->link[i]);
101 return r;
102}
tree_cell * dup_cell(const tree_cell *tc)
Definition nasl_tree.c:72

References alloc_tree_cell(), CONST_DATA, CONST_STR, dup_cell(), FAKE_CELL, TC::line_nb, TC::link, TC::size, TC::str_val, TC::type, and TC::x.

Referenced by dup_cell().

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

◆ free_tree()

void free_tree ( tree_cell * c)
static

Definition at line 105 of file nasl_tree.c.

106{
107 int i;
108 nasl_array *a;
109
110 if (c == NULL || c == FAKE_CELL)
111 return;
112 for (i = 0; i < 4; i++)
113 if (c->link[i] != NULL)
114 deref_cell (c->link[i]);
115
116 if (c->x.str_val != NULL)
117 switch (c->type)
118 {
119 case CONST_STR:
120 case CONST_DATA:
121#ifdef SCRATCH_FREED_MEMORY
122 if (c->size > 0)
123 memset (c->x.str_val, 0xFF, c->size);
124#endif
125 g_free (c->x.str_val);
126 break;
127
128 case CONST_REGEX:
129 case COMP_RE_MATCH:
130 case COMP_RE_NOMATCH:
131 if (c->x.ref_val != NULL)
132 {
133 regfree (c->x.ref_val);
134 g_free (c->x.ref_val);
135 }
136 break;
137
138 case DYN_ARRAY:
139 a = c->x.ref_val;
140 if (a != NULL)
141 {
142 free_array (a);
143 g_free (c->x.ref_val);
144 }
145 break;
146
147 case NODE_FUN_DEF:
148 case NODE_FUN_CALL:
149 case NODE_VAR:
150 case NODE_DECL:
151 case NODE_ARG:
152 case NODE_ARRAY_EL:
153 case NODE_FOREACH:
154 g_free (c->x.str_val);
155 break;
156 }
157#ifdef SCRATCH_FREED_MEMORY
158 memset (c, 0xFF, sizeof (*c));
159#endif
160 g_free (c);
161}
void deref_cell(tree_cell *c)
Definition nasl_tree.c:178
@ COMP_RE_MATCH
Definition nasl_tree.h:69
@ CONST_REGEX
Definition nasl_tree.h:83
@ COMP_RE_NOMATCH
Definition nasl_tree.h:70
@ NODE_FOREACH
Definition nasl_tree.h:18
void free_array(nasl_array *a)
Definition nasl_var.c:339
struct st_nasl_array nasl_array

References COMP_RE_MATCH, COMP_RE_NOMATCH, CONST_DATA, CONST_REGEX, CONST_STR, deref_cell(), DYN_ARRAY, FAKE_CELL, free_array(), TC::link, NODE_ARG, NODE_ARRAY_EL, NODE_DECL, NODE_FOREACH, NODE_FUN_CALL, NODE_FUN_DEF, NODE_VAR, TC::ref_val, TC::size, TC::str_val, TC::type, and TC::x.

Referenced by deref_cell().

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

◆ get_line_nb()

char * get_line_nb ( const tree_cell * c)

Definition at line 376 of file nasl_tree.c.

377{
378 static char txt[32];
379 if (c == NULL || c == FAKE_CELL || c->line_nb <= 0)
380 return "";
381 snprintf (txt, sizeof (txt), " at or near line %d ", c->line_nb);
382 return txt;
383}

References FAKE_CELL, and TC::line_nb.

Referenced by get_array_elem(), nasl_incr_variable(), and nasl_read_var_ref().

Here is the caller graph for this function:

◆ nasl_dump_tree()

void nasl_dump_tree ( const tree_cell * c)

Definition at line 363 of file nasl_tree.c.

364{
365 printf ("^^^^ %p ^^^^^\n", (void *) c);
366 if (c == NULL)
367 puts ("NULL CELL");
368 else if (c == FAKE_CELL)
369 puts ("FAKE CELL");
370 else
371 dump_tree (c, 0, 0);
372 printf ("vvvvvvvvvvvvvvvvvv\n");
373}

References dump_tree(), and FAKE_CELL.

Referenced by dump_ctxt(), nasl_func_call(), and ref_cell().

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

◆ nasl_is_leaf()

int nasl_is_leaf ( const tree_cell * pc)

Definition at line 386 of file nasl_tree.c.

387{
388 if (pc == NULL || pc == FAKE_CELL)
389 return 1;
390 switch (pc->type)
391 {
392 case CONST_INT:
393 case CONST_STR:
394 case CONST_DATA:
395 case REF_ARRAY:
396 case DYN_ARRAY:
397 return 1;
398 default:
399 return 0;
400 }
401 /*NOTREACHED*/}

References CONST_DATA, CONST_INT, CONST_STR, DYN_ARRAY, FAKE_CELL, REF_ARRAY, and TC::type.

Referenced by nasl_func_call().

Here is the caller graph for this function:

◆ nasl_type_name()

const char * nasl_type_name ( int t)

Definition at line 343 of file nasl_tree.c.

344{
345 static char txt4[4][32]; /* This function may be called 4 times in the same
346 expression */
347 static int i = 0;
348 char *txt;
349
350 if (i >= 4)
351 i = 0;
352 txt = txt4[i];
353
354 if (t >= 0 && (unsigned int) t < sizeof (node_names) / sizeof (node_names[0]))
355 snprintf (txt, 32, "%s (%d)", node_names[t], t);
356 else
357 snprintf (txt, 32, "*UNKNOWN* (%d)", t);
358 i++;
359 return txt;
360}

References node_names.

Referenced by cell_cmp(), dump_cell_val(), make_array_from_elems(), and nasl_affect().

Here is the caller graph for this function:

◆ prefix()

void prefix ( int n,
int i )
static

Definition at line 219 of file nasl_tree.c.

220{
221 int j;
222 for (j = 0; j < n; j++)
223 putchar (' ');
224 if (i <= 0)
225 fputs (" ", stdout);
226 else
227 printf ("%d: ", i);
228}

Referenced by dump_tree(), get_plugin_preference(), ipv6_prefix_to_mask(), load_checksums(), o_krb5_write_trimmed(), and print_pcap_error().

Here is the caller graph for this function:

◆ ref_cell()

void ref_cell ( tree_cell * c)

Definition at line 164 of file nasl_tree.c.

165{
166 if (c == NULL || c == FAKE_CELL)
167 return;
168 c->ref_count++;
169 if (c->ref_count < 0)
170 {
171 nasl_perror (NULL, "ref_cell: ref count is negative!\n");
172 nasl_dump_tree (c);
173 abort ();
174 }
175}
void nasl_dump_tree(const tree_cell *c)
Definition nasl_tree.c:363

References FAKE_CELL, nasl_dump_tree(), nasl_perror(), and TC::ref_count.

Referenced by cell2atom(), insert_nasl_func(), nasl_do_exit(), nasl_exec(), nasl_func_call(), nasl_return(), and yyparse().

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

Variable Documentation

◆ node_names

char* node_names[]
static
Initial value:
= {
"NODE_EMPTY", "NODE_IF_ELSE", "NODE_INSTR_L", "NODE_FOR",
"NODE_WHILE", "NODE_FOREACH", "NODE_REPEAT_UNTIL", "NODE_REPEATED",
"NODE_FUN_DEF", "NODE_FUN_CALL", "NODE_DECL", "NODE_ARG",
"NODE_RETURN", "NODE_BREAK", "NODE_CONTINUE",
"NODE_ARRAY_EL", "NODE_AFF", "NODE_VAR", "NODE_LOCAL",
"NODE_GLOBAL", "NODE_PLUS_EQ", "NODE_MINUS_EQ", "NODE_MULT_EQ",
"NODE_DIV_EQ", "NODE_MODULO_EQ",
"NODE_L_SHIFT_EQ", "NODE_R_SHIFT_EQ", "NODE_R_USHIFT_EQ", "EXPR_AND",
"EXPR_OR", "EXPR_NOT",
"EXPR_PLUS", "EXPR_MINUS", "EXPR_U_MINUS", "EXPR_MULT",
"EXPR_DIV", "EXPR_MODULO", "EXPR_EXPO",
"EXPR_BIT_AND", "EXPR_BIT_OR", "EXPR_BIT_XOR", "EXPR_BIT_NOT",
"EXPR_INCR", "EXPR_DECR", "EXPR_L_SHIFT", "EXPR_R_SHIFT",
"EXPR_R_USHIFT",
"COMP_MATCH", "COMP_NOMATCH", "COMP_RE_MATCH", "COMP_RE_NOMATCH",
"COMP_LT", "COMP_LE", "COMP_EQ", "COMP_NE",
"COMP_GT", "COMP_GE", "CONST_INT", "CONST_STR",
"CONST_DATA", "CONST_REGEX",
"ARRAY_ELEM",
"REF_VAR", "REF_ARRAY", "DYN_ARRAY"}

Definition at line 188 of file nasl_tree.c.

188 {
189 "NODE_EMPTY", "NODE_IF_ELSE", "NODE_INSTR_L", "NODE_FOR",
190 "NODE_WHILE", "NODE_FOREACH", "NODE_REPEAT_UNTIL", "NODE_REPEATED",
191 "NODE_FUN_DEF", "NODE_FUN_CALL", "NODE_DECL", "NODE_ARG",
192 "NODE_RETURN", "NODE_BREAK", "NODE_CONTINUE",
193
194 "NODE_ARRAY_EL", "NODE_AFF", "NODE_VAR", "NODE_LOCAL",
195 "NODE_GLOBAL", "NODE_PLUS_EQ", "NODE_MINUS_EQ", "NODE_MULT_EQ",
196 "NODE_DIV_EQ", "NODE_MODULO_EQ",
197
198 "NODE_L_SHIFT_EQ", "NODE_R_SHIFT_EQ", "NODE_R_USHIFT_EQ", "EXPR_AND",
199 "EXPR_OR", "EXPR_NOT",
200
201 "EXPR_PLUS", "EXPR_MINUS", "EXPR_U_MINUS", "EXPR_MULT",
202 "EXPR_DIV", "EXPR_MODULO", "EXPR_EXPO",
203
204 "EXPR_BIT_AND", "EXPR_BIT_OR", "EXPR_BIT_XOR", "EXPR_BIT_NOT",
205 "EXPR_INCR", "EXPR_DECR", "EXPR_L_SHIFT", "EXPR_R_SHIFT",
206 "EXPR_R_USHIFT",
207
208 "COMP_MATCH", "COMP_NOMATCH", "COMP_RE_MATCH", "COMP_RE_NOMATCH",
209
210 "COMP_LT", "COMP_LE", "COMP_EQ", "COMP_NE",
211 "COMP_GT", "COMP_GE", "CONST_INT", "CONST_STR",
212 "CONST_DATA", "CONST_REGEX",
213
214 "ARRAY_ELEM",
215
216 "REF_VAR", "REF_ARRAY", "DYN_ARRAY"};

Referenced by dump_tree(), and nasl_type_name().