]> git.netwichtig.de Git - user/henk/code/exim.git/blobdiff - src/src/exim.c
Fix regext substring capture variables for null matches. Bug 2933
[user/henk/code/exim.git] / src / src / exim.c
index b9328f017decb15734c935995cda28a66dfbbe32..47a685aa7b45da1c66fc6402625874b38dd3d1aa 100644 (file)
@@ -134,6 +134,8 @@ if ((yield = (res >= 0)))
     PCRE2_SIZE len;
     pcre2_substring_get_bynumber(md, matchnum,
       (PCRE2_UCHAR **)&expand_nstring[expand_nmax], &len);
+    if (!expand_nstring[expand_nmax])
+      { expand_nstring[expand_nmax] = US""; len = 0; }
     expand_nlength[expand_nmax++] = (int)len;
     }
   expand_nmax--;
@@ -3329,7 +3331,7 @@ on the second character (the one after '-'), to save some effort. */
 
        else if (Ustrcmp(argrest, "ai") == 0)
          authenticated_id = string_copy_taint(
-           exim_str_fail_toolong(argv[++i], EXIM_EMAILADDR_MAX, "-oMas"),
+           exim_str_fail_toolong(argv[++i], EXIM_EMAILADDR_MAX, "-oMai"),
            GET_TAINTED);
 
        /* -oMi: Set incoming interface address */
@@ -6081,13 +6083,13 @@ MORELOOP:
   dnslist_domain = dnslist_matched = NULL;
 #ifdef WITH_CONTENT_SCAN
   malware_name = NULL;
+  regex_vars_clear();
 #endif
   callout_address = NULL;
   sending_ip_address = NULL;
   deliver_localpart_data = deliver_domain_data =
   recipient_data = sender_data = NULL;
   acl_var_m = NULL;
-  regex_vars_clear();
 
   store_reset(reset_point);
   }