OpenVAS Libraries  9.0.3
nasl_debug.c File Reference
#include <stdarg.h>
#include <unistd.h>
#include "../misc/arglists.h"
#include "nasl_tree.h"
#include "nasl_global_ctxt.h"
#include "nasl_func.h"
#include "nasl_var.h"
#include "nasl_lex_ctxt.h"
#include "exec.h"
#include "../misc/plugutils.h"
#include "../misc/openvas_logging.h"
Include dependency graph for nasl_debug.c:

Go to the source code of this file.

Functions

const char * nasl_get_filename (const char *function)
 
void nasl_set_function_name (const char *funname)
 
const char * nasl_get_function_name ()
 
void nasl_set_filename (const char *filename)
 
void nasl_set_function_filename (const char *function)
 
void nasl_perror (lex_ctxt *lexic, char *msg,...)
 
int nasl_trace_enabled (void)
 Checks if the nasl_trace_fp is set. More...
 
void nasl_trace (lex_ctxt *lexic, char *msg,...)
 Prints debug message in printf fashion to nasl_trace_fp if it exists. More...
 

Variables

FILE * nasl_trace_fp
 

Function Documentation

◆ nasl_get_filename()

const char* nasl_get_filename ( const char *  function)

Definition at line 43 of file nasl_debug.c.

44 {
45  char *ret = NULL;
46 
47  if (functions_filenames && function)
48  ret = g_hash_table_lookup (functions_filenames, function);
49  return ret ?: debug_filename;
50 }

◆ nasl_get_function_name()

const char* nasl_get_function_name ( void  )

Definition at line 65 of file nasl_debug.c.

66 {
67  return debug_funname;
68 }

◆ nasl_perror()

void nasl_perror ( lex_ctxt lexic,
char *  msg,
  ... 
)
Todo:
Enable this when the NVTs are ready. Sends ERRMSG to client.

Definition at line 94 of file nasl_debug.c.

95 {
96  va_list param;
97  gchar debug_message[4096];
98  gchar *final_message;
99  char *script_name = "";
100  lex_ctxt *lexic2 = NULL;
101  int line_nb = 0;
102 
103  va_start (param, msg);
104 
105  if (lexic != NULL)
106  {
107  script_name = arg_get_value (lexic->script_infos, "script_name");
108  if (script_name == NULL)
109  script_name = "";
110  /* Climbing up to find a line number */
111  for (lexic2 = lexic; lexic2 != NULL; lexic2 = lexic2->up_ctxt)
112  {
113  if (lexic2->line_nb != 0)
114  {
115  line_nb = lexic2->line_nb;
116  break;
117  }
118  }
119  }
120 
121  g_vsnprintf (debug_message, sizeof (debug_message), msg, param);
122  if ((debug_funname != NULL) && (g_strcmp0 (debug_funname, "") != 0))
123  final_message = g_strconcat ("In function '", debug_funname,
124  "()': ", debug_message, NULL);
125  else
126  final_message = g_strdup (debug_message);
127 
128  if (g_strcmp0 (debug_filename, script_name) == 0)
129  log_legacy_write ("[%d](%s:%d) %s\n", getpid (), script_name,
130  line_nb, final_message);
131  else
132  log_legacy_write ("[%d](%s)(%s:%d) %s\n", getpid (), script_name,
133  debug_filename, line_nb, final_message);
134  g_free(final_message);
135 
137 #if 0
138  if (lexic != NULL)
139  post_error (lexic->script_infos, 1, debug_message);
140 #endif
141 
142  va_end (param);
143 }
void post_error(const char *oid, struct arglist *desc, int port, const char *action)
Definition: plugutils.c:459
void log_legacy_write(const char *format,...)
Legacy function to write a log message.
tree_cell * script_name(lex_ctxt *lexic)
struct arglist * script_infos
Definition: nasl_lex_ctxt.h:39
void * arg_get_value(struct arglist *args, const char *name)
Definition: arglists.c:252
struct struct_lex_ctxt * up_ctxt
Definition: nasl_lex_ctxt.h:33

References arg_get_value(), struct_lex_ctxt::line_nb, struct_lex_ctxt::script_infos, script_name(), and struct_lex_ctxt::up_ctxt.

Referenced by add_numbered_var_to_ctxt(), add_var_to_list(), alloc_RE_cell(), cell_cmp(), decl_local_variables(), decl_nasl_func(), exec_nasl_script(), forge_icmp_v6_packet(), forge_tcp_packet(), forge_tcp_v6_packet(), get_ip_element(), get_ipv6_element(), get_kb_list(), get_tcp_element(), get_tcp_v6_element(), insert_ip_options(), insert_ipv6_options(), make_array_from_elems(), nasl_affect(), nasl_array_iterator(), nasl_bf_cbc(), nasl_crap(), nasl_dec2str(), nasl_defined_func(), nasl_egrep(), 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_fread(), nasl_func_has_arg(), nasl_func_named_args(), nasl_func_unnamed_args(), nasl_fwrite(), nasl_get_preference(), nasl_get_sign(), nasl_get_smb2_sign(), nasl_get_sock_info(), nasl_get_source_port(), nasl_get_tmp_dir(), nasl_get_var_by_num(), nasl_gettimeofday(), nasl_hmac_sha256(), nasl_incr_variable(), nasl_insert_hexzeros(), nasl_insstr(), nasl_join_multicast_group(), nasl_keyexchg(), nasl_keys(), nasl_leave_multicast_group(), nasl_lint(), nasl_lm_owf_gen(), nasl_localtime(), nasl_make_array(), nasl_make_list(), nasl_match(), nasl_mktime(), nasl_nt_owf_gen(), nasl_ntlm2_response(), nasl_ntlm_response(), nasl_ntlmv1_hash(), nasl_ntlmv2_hash(), nasl_ntlmv2_response(), nasl_ntv2_owf_gen(), nasl_ord(), nasl_pcap_next(), nasl_rawstring(), nasl_read_var_ref(), nasl_recv_line(), nasl_rsa_private_decrypt(), nasl_rsa_public_encrypt(), nasl_same_host(), nasl_scanner_get_port(), nasl_send(), nasl_send_capture(), nasl_send_packet(), nasl_send_v6packet(), nasl_socket_get_cert(), nasl_socket_get_ssl_compression(), nasl_socket_get_ssl_session_id(), nasl_socket_negotiate_ssl(), nasl_split(), nasl_str_replace(), nasl_stridx(), nasl_string(), nasl_substr(), nasl_target_is_ipv6(), nasl_telnet_init(), nasl_unlink(), print_gcrypt_error(), print_tls_error(), ref_cell(), replace_kb_item(), script_add_preference(), script_category(), script_dependencies(), script_exclude_keys(), script_get_preference(), script_get_preference_file_content(), script_get_preference_file_location(), script_mandatory_keys(), script_require_keys(), script_tag(), script_version(), script_xref(), set_ip_elements(), set_ipv6_elements(), set_kb_item(), set_tcp_elements(), set_tcp_v6_elements(), and var2str().

Here is the call graph for this function:

◆ nasl_set_filename()

void nasl_set_filename ( const char *  filename)

Definition at line 71 of file nasl_debug.c.

72 {
73  assert (filename);
74 
75  if (filename == debug_filename)
76  return;
77  g_free (debug_filename);
78  debug_filename = g_strdup (filename);
79 }

Referenced by exec_nasl_script().

Here is the caller graph for this function:

◆ nasl_set_function_filename()

void nasl_set_function_filename ( const char *  function)

Definition at line 82 of file nasl_debug.c.

83 {
84  assert (function);
85 
86  if (!functions_filenames)
87  functions_filenames = g_hash_table_new_full
88  (g_str_hash, g_str_equal, g_free, g_free);
89  g_hash_table_insert (functions_filenames, g_strdup (function),
90  g_strdup (debug_filename));
91 }

◆ nasl_set_function_name()

void nasl_set_function_name ( const char *  funname)

Definition at line 56 of file nasl_debug.c.

57 {
58  if (funname == debug_funname)
59  return;
60  g_free (debug_funname);
61  debug_funname = g_strdup (funname);
62 }

◆ nasl_trace()

void nasl_trace ( lex_ctxt lexic,
char *  msg,
  ... 
)

Prints debug message in printf fashion to nasl_trace_fp if it exists.

Like nasl_perror, but to the nasl_trace_fp.

Definition at line 165 of file nasl_debug.c.

166 {
167  va_list param;
168  char debug_message[4096];
169  char *script_name = "", *p;
170 
171  if (nasl_trace_fp == NULL)
172  return;
173  va_start (param, msg);
174 
175  if (lexic != NULL)
176  {
177  script_name = arg_get_value (lexic->script_infos, "script_name");
178  if (script_name == NULL)
179  script_name = "";
180  }
181 
182  vsnprintf (debug_message, sizeof (debug_message), msg, param);
183  for (p = debug_message; *p != '\0'; p++)
184  ;
185  if (p == debug_message || p[-1] != '\n')
186  fprintf (nasl_trace_fp, "[%d](%s) %s\n", getpid (), script_name,
187  debug_message);
188  else
189  fprintf (nasl_trace_fp, "[%d](%s) %s", getpid (), script_name,
190  debug_message);
191 
192  va_end (param);
193 }
FILE * nasl_trace_fp
Definition: exec.c:386
tree_cell * script_name(lex_ctxt *lexic)
struct arglist * script_infos
Definition: nasl_lex_ctxt.h:39
void * arg_get_value(struct arglist *args, const char *name)
Definition: arglists.c:252

References arg_get_value(), nasl_trace_fp, struct_lex_ctxt::script_infos, and script_name().

Referenced by nasl_read_var_ref(), and nasl_verify_signature().

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

◆ nasl_trace_enabled()

int nasl_trace_enabled ( void  )

Checks if the nasl_trace_fp is set.

Returns
0 if nasl_trace_fp == NULL, 1 otherwise.

Definition at line 151 of file nasl_debug.c.

152 {
153  if (nasl_trace_fp == NULL)
154  return 0;
155  else
156  return 1;
157 }
FILE * nasl_trace_fp
Definition: exec.c:386

References nasl_trace_fp.

Referenced by nasl_read_var_ref().

Here is the caller graph for this function:

Variable Documentation

◆ nasl_trace_fp

FILE* nasl_trace_fp

Definition at line 386 of file exec.c.

Referenced by nasl_trace(), and nasl_trace_enabled().