X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/c4b4086235b1d5e21fcf1ad72a1b05813e15dcbd..8f2cf8f5adaa08ef84b47bf9bc2f71e39236c22d:/src/src/globals.c diff --git a/src/src/globals.c b/src/src/globals.c index 1e12bcb92..012c637dd 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -3,7 +3,7 @@ *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2018 */ -/* Copyright (c) The Exim Maintainers 2020 */ +/* Copyright (c) The Exim Maintainers 2020 - 2021 */ /* See the file NOTICE for conditions of use and distribution. */ /* All the global variables are defined together in this one module, so @@ -98,10 +98,6 @@ int sqlite_lock_timeout = 5; BOOL move_frozen_messages = FALSE; #endif -#ifdef ALLOW_INSECURE_TAINTED_DATA -BOOL allow_insecure_tainted_data = FALSE; -#endif - /* These variables are outside the #ifdef because it keeps the code less cluttered in several places (e.g. during logging) if we can always refer to them. Also, the tls_ variables are now always visible. Note that these are @@ -118,7 +114,7 @@ tls_support tls_out = { uschar *dsn_envid = NULL; int dsn_ret = 0; -const pcre *regex_DSN = NULL; +const pcre2_code *regex_DSN = NULL; uschar *dsn_advertise_hosts = NULL; #ifndef DISABLE_TLS @@ -126,7 +122,7 @@ BOOL gnutls_compat_mode = FALSE; BOOL gnutls_allow_auto_pkcs11 = FALSE; uschar *hosts_require_alpn = NULL; uschar *openssl_options = NULL; -const pcre *regex_STARTTLS = NULL; +const pcre2_code *regex_STARTTLS = NULL; uschar *tls_advertise_hosts = US"*"; uschar *tls_alpn = US"smtp:esmtp"; uschar *tls_certificate = NULL; @@ -147,11 +143,7 @@ uschar *tls_require_ciphers = NULL; uschar *tls_resumption_hosts = NULL; # endif uschar *tls_try_verify_hosts = NULL; -#if defined(SUPPORT_SYSDEFAULT_CABUNDLE) || !defined(USE_GNUTLS) uschar *tls_verify_certificates= US"system"; -#else -uschar *tls_verify_certificates= NULL; -#endif uschar *tls_verify_hosts = NULL; int tls_watch_fd = -1; time_t tls_watch_trigger_time = (time_t)0; @@ -163,11 +155,11 @@ uschar *tls_advertise_hosts = NULL; /* Per Recipient Data Response variables */ BOOL prdr_enable = FALSE; BOOL prdr_requested = FALSE; -const pcre *regex_PRDR = NULL; +const pcre2_code *regex_PRDR = NULL; #endif #ifdef SUPPORT_I18N -const pcre *regex_UTF8 = NULL; +const pcre2_code *regex_UTF8 = NULL; #endif /* Input-reading functions for messages, so we can use special ones for @@ -175,16 +167,18 @@ incoming TCP/IP. The defaults use stdin. We never need these for any stand-alone tests. */ #if !defined(STAND_ALONE) && !defined(MACRO_PREDEF) -int (*lwr_receive_getc)(unsigned) = stdin_getc; +int (*lwr_receive_getc)(unsigned) = stdin_getc; uschar * (*lwr_receive_getbuf)(unsigned *) = NULL; -int (*lwr_receive_ungetc)(int) = stdin_ungetc; -int (*receive_getc)(unsigned) = stdin_getc; -uschar * (*receive_getbuf)(unsigned *) = NULL; -void (*receive_get_cache)(void)= NULL; -int (*receive_ungetc)(int) = stdin_ungetc; -int (*receive_feof)(void) = stdin_feof; -int (*receive_ferror)(void) = stdin_ferror; -BOOL (*receive_smtp_buffered)(void) = NULL; /* Only used for SMTP */ +int (*lwr_receive_ungetc)(int) = stdin_ungetc; +BOOL (*lwr_receive_hasc)(void) = stdin_hasc; + +int (*receive_getc)(unsigned) = stdin_getc; +uschar * (*receive_getbuf)(unsigned *) = NULL; +void (*receive_get_cache)(unsigned) = NULL; +BOOL (*receive_hasc)(void) = stdin_hasc; +int (*receive_ungetc)(int) = stdin_ungetc; +int (*receive_feof)(void) = stdin_feof; +int (*receive_ferror)(void) = stdin_ferror; #endif @@ -421,10 +415,6 @@ BOOL spf_result_guessed = FALSE; #endif BOOL split_spool_directory = FALSE; BOOL spool_wireformat = FALSE; -#ifdef EXPERIMENTAL_SRS_ALT -BOOL srs_usehash = TRUE; -BOOL srs_usetimestamp = TRUE; -#endif BOOL strict_acl_vars = FALSE; BOOL strip_excess_angle_brackets = FALSE; BOOL strip_trailing_dot = FALSE; @@ -610,9 +600,6 @@ address_item address_defaults = { .extra_headers = NULL, .remove_headers = NULL, .variables = NULL, -#ifdef EXPERIMENTAL_SRS_ALT - .srs_sender = NULL, -#endif .ignore_error = FALSE, #ifdef SUPPORT_I18N .utf8_msg = FALSE, @@ -662,7 +649,7 @@ auth_instance auth_defaults = { uschar *auth_defer_msg = US"reason not recorded"; uschar *auth_defer_user_msg = US""; -uschar *auth_vars[AUTH_VARS]; +const uschar *auth_vars[AUTH_VARS]; int auto_thaw = 0; #ifdef WITH_CONTENT_SCAN int av_failed = FALSE; /* boolean but accessed as vtype_int*/ @@ -715,10 +702,10 @@ uschar *chunking_advertise_hosts = US"*"; unsigned chunking_datasize = 0; unsigned chunking_data_left = 0; chunking_state_t chunking_state= CHUNKING_NOT_OFFERED; -const pcre *regex_CHUNKING = NULL; +const pcre2_code *regex_CHUNKING = NULL; #ifdef EXPERIMENTAL_ESMTP_LIMITS -const pcre *regex_LIMITS = NULL; +const pcre2_code *regex_LIMITS = NULL; #endif uschar *client_authenticator = NULL; @@ -824,8 +811,10 @@ bit_table debug_options[] = { /* must be in alphabetical order and use BIT_TABLE(D, verify), }; int debug_options_count = nelem(debug_options); - +unsigned debug_pretrigger_bsize= 0; +uschar * debug_pretrigger_buf = NULL; unsigned int debug_selector = 0; + int delay_warning[DELAY_WARNING_SIZE] = { DELAY_WARNING_SIZE, 1, 24*60*60 }; uschar *delay_warning_condition= US"${if or {" @@ -906,6 +895,7 @@ uschar *dnslist_value = NULL; tree_node *domainlist_anchor = NULL; int domainlist_count = 0; uschar *dsn_from = US DEFAULT_DSN_FROM; +unsigned int dtrigger_selector = 0; int errno_quota = ERRNO_QUOTA; uschar *errors_copy = NULL; @@ -928,7 +918,7 @@ int expand_level = 0; /* Nesting depth, indent for debug */ int expand_forbid = 0; int expand_nlength[EXPAND_MAXN+1]; int expand_nmax = -1; -uschar *expand_nstring[EXPAND_MAXN+1]; +const uschar *expand_nstring[EXPAND_MAXN+1]; uschar *expand_string_message; uschar *extra_local_interfaces = NULL; @@ -957,7 +947,7 @@ volatile sig_atomic_t had_command_timeout = 0; volatile sig_atomic_t had_command_sigterm = 0; volatile sig_atomic_t had_data_timeout = 0; volatile sig_atomic_t had_data_sigint = 0; -uschar *headers_charset = US HEADERS_CHARSET; +const uschar *headers_charset = US HEADERS_CHARSET; int header_insert_maxlen = 64 * 1024; header_line *header_last = NULL; header_line *header_list = NULL; @@ -1061,9 +1051,6 @@ int log_default[] = { /* for initializing log_selector */ Li_size_reject, Li_skip_delivery, Li_smtp_confirmation, -#ifdef ALLOW_INSECURE_TAINTED_DATA - Li_tainted, -#endif Li_tls_certificate_verified, Li_tls_cipher, -1 @@ -1133,9 +1120,6 @@ bit_table log_options[] = { /* must be in alphabetical order, BIT_TABLE(L, smtp_protocol_error), BIT_TABLE(L, smtp_syntax_error), BIT_TABLE(L, subject), -#ifdef ALLOW_INSECURE_TAINTED_DATA - BIT_TABLE(L, tainted), -#endif BIT_TABLE(L, tls_certificate_verified), BIT_TABLE(L, tls_cipher), BIT_TABLE(L, tls_peerdn), @@ -1171,7 +1155,6 @@ uschar *message_headers = NULL; uschar *message_id; uschar *message_id_domain = NULL; uschar *message_id_text = NULL; -struct timeval message_id_tv = { 0, 0 }; uschar message_id_option[MESSAGE_ID_LENGTH + 3]; uschar *message_id_external; int message_linecount = 0; @@ -1217,6 +1200,10 @@ uid_t originator_uid; uschar *override_local_interfaces = NULL; uschar *override_pid_file_path = NULL; +pcre2_general_context * pcre_gen_ctx = NULL; +pcre2_compile_context * pcre_cmp_ctx = NULL; +pcre2_match_context * pcre_mtc_ctx = NULL; + uschar *percent_hack_domains = NULL; uschar *pid_file_path = US PID_FILE_PATH "\0<--------------Space to patch pid_file_path->"; @@ -1310,20 +1297,20 @@ int recipients_count = 0; recipient_item *recipients_list = NULL; int recipients_list_max = 0; int recipients_max = 50000; -const pcre *regex_AUTH = NULL; -const pcre *regex_check_dns_names = NULL; -const pcre *regex_From = NULL; -const pcre *regex_IGNOREQUOTA = NULL; -const pcre *regex_PIPELINING = NULL; -const pcre *regex_SIZE = NULL; +const pcre2_code *regex_AUTH = NULL; +const pcre2_code *regex_check_dns_names = NULL; +const pcre2_code *regex_From = NULL; +const pcre2_code *regex_IGNOREQUOTA = NULL; +const pcre2_code *regex_PIPELINING = NULL; +const pcre2_code *regex_SIZE = NULL; #ifndef DISABLE_PIPE_CONNECT -const pcre *regex_EARLY_PIPE = NULL; +const pcre2_code *regex_EARLY_PIPE = NULL; #endif -const pcre *regex_ismsgid = NULL; -const pcre *regex_smtp_code = NULL; -uschar *regex_vars[REGEX_VARS]; +const pcre2_code *regex_ismsgid = NULL; +const pcre2_code *regex_smtp_code = NULL; +const uschar *regex_vars[REGEX_VARS]; #ifdef WHITELIST_D_MACROS -const pcre *regex_whitelisted_macro = NULL; +const pcre2_code *regex_whitelisted_macro = NULL; #endif #ifdef WITH_CONTENT_SCAN uschar *regex_match_string = NULL; @@ -1550,19 +1537,6 @@ uschar *spf_smtp_comment_template FILE *spool_data_file = NULL; uschar *spool_directory = US SPOOL_DIRECTORY "\0<--------------Space to patch spool_directory->"; -#ifdef EXPERIMENTAL_SRS_ALT -uschar *srs_config = NULL; -uschar *srs_db_address = NULL; -uschar *srs_db_key = NULL; -int srs_hashlength = 6; -int srs_hashmin = -1; -int srs_maxage = 31; -uschar *srs_orig_recipient = NULL; -uschar *srs_orig_sender = NULL; -uschar *srs_recipient = NULL; -uschar *srs_secrets = NULL; -uschar *srs_status = NULL; -#endif #ifdef SUPPORT_SRS uschar *srs_recipient = NULL; #endif