Fix undersized buffer use by eximon. Bug 1527
[exim.git] / src / exim_monitor / em_globals.c
1 /*************************************************
2 * Exim Monitor *
3 *************************************************/
4
5 /* Copyright (c) University of Cambridge 1995 - 2012 */
6 /* See the file NOTICE for conditions of use and distribution. */
7
8
9 #include "em_hdr.h"
10
11 /* This source module contains all the global variables used in
12 the exim monitor, including those that are used by the standard
13 Exim modules that are included in Eximon. For comments on their
14 usage, see em_hdr.h and globals.h. */
15
16
17 /* The first set are unique to Eximon */
18
19 Display *X_display;
20 XtAppContext X_appcon;
21
22 XtActionsRec actionTable[] = {
23 { "dialogAction", (XtActionProc)dialogAction}};
24
25 int actionTableSize = sizeof(actionTable)/sizeof(XtActionsRec);
26
27 XtTranslations queue_trans;
28 XtTranslations text_trans;
29
30 Widget dialog_ref_widget;
31 Widget toplevel_widget;
32 Widget log_widget = NULL;
33 Widget queue_widget;
34 Widget unhide_widget = NULL;
35
36
37 FILE *LOG;
38
39 int action_output = FALSE;
40 int action_queue_update = TRUE;
41 uschar actioned_message[24];
42 uschar *action_required;
43 uschar *alternate_config = NULL;
44
45 #ifdef EXPERIMENTAL_BRIGHTMAIL
46 int bmi_run = 0;
47 uschar *bmi_verdicts = NULL;
48 #endif
49
50 int body_max = 20000;
51
52 uschar *exim_path = US BIN_DIRECTORY "/exim"
53 "\0<---------------Space to patch exim_path->";
54
55 int eximon_initialized = FALSE;
56
57 int log_buffer_size = 10240;
58 BOOL log_datestamping = FALSE;
59 int log_depth = 150;
60 uschar *log_display_buffer;
61 uschar *log_file = NULL;
62 uschar log_file_open[256];
63 uschar *log_font = NULL;
64 ino_t log_inode;
65 long int log_position;
66 int log_width = 600;
67
68 uschar *menu_event = US"Shift<Btn1Down>";
69 int menu_is_up = FALSE;
70 int min_height = 162;
71 int min_width = 103;
72
73 pipe_item *pipe_chain = NULL;
74
75 uschar *qualify_domain = NULL;
76 int queue_depth = 200;
77 uschar *queue_font = NULL;
78 int queue_max_addresses = 10;
79 skip_item *queue_skip = NULL;
80 uschar *queue_stripchart_name = NULL;
81 int queue_update = 60;
82 int queue_width = 600;
83
84 pcre *yyyymmdd_regex;
85
86 uschar *size_stripchart = NULL;
87 uschar *size_stripchart_name = NULL;
88 int spool_is_split = FALSE;
89 int start_small = FALSE;
90 int stripchart_height = 90;
91 int stripchart_number = 1;
92 pcre **stripchart_regex;
93 uschar **stripchart_title;
94 int *stripchart_total;
95 int stripchart_update = 60;
96 int stripchart_width = 80;
97 int stripchart_varstart = 1;
98
99 int text_depth = 200;
100 int tick_queue_accumulator = 999999;
101
102 uschar *window_title = US"exim monitor";
103
104
105 /***********************************************************/
106 /***********************************************************/
107
108
109 /* These ones are used by Exim modules included in Eximon. Not all are
110 actually relevant to the operation of Eximon. If SPOOL_DIRECTORY is not
111 defined (Exim was compiled with it unset), just define it empty. The script
112 that fires up the monitor fishes the value out by using -bP anyway. */
113
114 #ifndef SPOOL_DIRECTORY
115 #define SPOOL_DIRECTORY ""
116 #endif
117
118 tree_node *acl_var_c = NULL;
119 tree_node *acl_var_m = NULL;
120 uschar *active_hostname = NULL;
121 BOOL allow_unqualified_recipient = FALSE;
122 BOOL allow_unqualified_sender = FALSE;
123 uschar *authenticated_id = NULL;
124 uschar *authenticated_sender = NULL;
125
126 uschar *big_buffer = NULL;
127 int big_buffer_size = BIG_BUFFER_SIZE;
128 int body_linecount = 0;
129 int body_zerocount = 0;
130
131 BOOL deliver_firsttime = FALSE;
132 BOOL deliver_freeze = FALSE;
133 time_t deliver_frozen_at = 0;
134 BOOL deliver_manual_thaw = FALSE;
135
136 #ifndef DISABLE_DKIM
137 uschar *dkim_cur_signer = NULL;
138 uschar *dkim_signers = NULL;
139 uschar *dkim_signing_domain = NULL;
140 uschar *dkim_signing_selector = NULL;
141 uschar *dkim_verify_signers = US"$dkim_signers";
142 BOOL dkim_collect_input = FALSE;
143 BOOL dkim_disable_verify = FALSE;
144 #endif
145
146 BOOL dont_deliver = FALSE;
147
148 #ifdef EXPERIMENTAL_DSN
149 int dsn_ret = 0;
150 uschar *dsn_envid = NULL;
151 #endif
152
153 #ifdef WITH_CONTENT_SCAN
154 int fake_response = OK;
155 #endif
156
157 header_line *header_last = NULL;
158 header_line *header_list = NULL;
159
160 BOOL host_lookup_deferred = FALSE;
161 BOOL host_lookup_failed = FALSE;
162 uschar *interface_address = NULL;
163 int interface_port = 0;
164
165 BOOL local_error_message = FALSE;
166 uschar *local_scan_data = NULL;
167 BOOL log_timezone = FALSE;
168
169 #ifdef WITH_CONTENT_SCAN
170 uschar *spam_bar = NULL;
171 uschar *spam_report = NULL;
172 uschar *spam_score = NULL;
173 uschar *spam_score_int = NULL;
174 #endif
175
176 int max_received_linelength= 0;
177 int message_age = 0;
178 uschar *message_id;
179 uschar *message_id_external;
180 uschar message_id_option[MESSAGE_ID_LENGTH + 3];
181
182 int message_linecount = 0;
183 int message_size = 0;
184 uschar message_subdir[2] = { 0, 0 };
185
186 gid_t originator_gid;
187 uschar *originator_login;
188 uid_t originator_uid;
189
190 uschar *primary_hostname = NULL;
191
192 int received_count = 0;
193 uschar *received_protocol = NULL;
194 int received_time = 0;
195 int recipients_count = 0;
196 recipient_item *recipients_list = NULL;
197 int recipients_list_max = 0;
198 int running_in_test_harness=FALSE;
199
200 uschar *sender_address = NULL;
201 uschar *sender_fullhost = NULL;
202 uschar *sender_helo_name = NULL;
203 uschar *sender_host_address = NULL;
204 uschar *sender_host_authenticated = NULL;
205 uschar *sender_host_name = NULL;
206 int sender_host_port = 0;
207 uschar *sender_ident = NULL;
208 BOOL sender_local = FALSE;
209 BOOL sender_set_untrusted = FALSE;
210 uschar *smtp_active_hostname = NULL;
211
212 BOOL split_spool_directory = FALSE;
213 uschar *spool_directory = US SPOOL_DIRECTORY;
214 int string_datestamp_offset=-1;
215 int string_datestamp_length= 0;
216 int string_datestamp_type = -1;
217
218 BOOL timestamps_utc = FALSE;
219 tls_support tls_in = {
220 -1, /* tls_active */
221 0, /* bits */
222 FALSE, /* tls_certificate_verified */
223 #ifdef EXPERIMENTAL_DANE
224 FALSE, /* dane_verified */
225 0, /* tlsa_usage */
226 #endif
227 NULL, /* tls_cipher */
228 FALSE, /* tls_on_connect */
229 NULL, /* tls_on_connect_ports */
230 NULL, /* tls_peerdn */
231 NULL /* tls_sni */
232 };
233
234 tree_node *tree_duplicates = NULL;
235 tree_node *tree_nonrecipients = NULL;
236 tree_node *tree_unusable = NULL;
237
238 uschar *version_date = US"?";
239 uschar *version_string = US"?";
240
241 int warning_count = 0;
242
243 /* End of em_globals.c */