Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package exim for openSUSE:Factory checked in 
at 2022-10-19 13:17:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/exim (Old)
 and      /work/SRC/openSUSE:Factory/.exim.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "exim"

Wed Oct 19 13:17:29 2022 rev:73 rq:1029728 version:4.96

Changes:
--------
--- /work/SRC/openSUSE:Factory/exim/exim.changes        2022-09-29 
18:15:25.979499015 +0200
+++ /work/SRC/openSUSE:Factory/.exim.new.2275/exim.changes      2022-10-19 
13:17:54.917251733 +0200
@@ -0,0 +1,4 @@
+Tue Oct 18 10:00:39 UTC 2022 - Peter Wullinger <wullin...@rz.uni-kiel.de>
+
+- add patch-cve-2022-3559 (fixes CVE-2022-3559, bsc#1204427, Bug 2915)
+  

New:
----
  patch-cve-2022-3559

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ exim.spec ++++++
--- /var/tmp/diff_new_pack.uZYiVa/_old  2022-10-19 13:17:56.641255306 +0200
+++ /var/tmp/diff_new_pack.uZYiVa/_new  2022-10-19 13:17:56.649255323 +0200
@@ -75,7 +75,7 @@
 Requires(pre):  fileutils textutils
 %endif
 Version:        4.96
-Release:        1
+Release:        2
 %if %{with_mysql}
 BuildRequires:  mysql-devel
 %endif
@@ -106,6 +106,7 @@
 Patch0:         exim-tail.patch
 Patch1:         gnu_printf.patch
 Patch2:         patch-no-exit-on-rewrite-malformed-address.patch
+Patch3:         patch-cve-2022-3559
 
 %package -n eximon
 Summary:        Eximon, an graphical frontend to administer Exim's mail queue
@@ -150,6 +151,7 @@
 %patch0
 %patch1 -p1
 %patch2 -p1
+%patch3 -p1
 # build with fPIE/pie on SUSE 10.0 or newer, or on any other platform
 %if %{?suse_version:%suse_version}%{?!suse_version:99999} > 930
 fPIE="-fPIE"




++++++ patch-cve-2022-3559 ++++++
diff -ru a/src/exim.c b/src/exim.c
--- a/src/exim.c        2022-06-23 15:41:10.000000000 +0200
+++ b/src/exim.c        2022-10-18 13:38:30.366261000 +0200
@@ -2001,8 +2001,6 @@
   regex_must_compile(US"^[A-Za-z0-9_/.-]*$", FALSE, TRUE);
 #endif
 
-for (i = 0; i < REGEX_VARS; i++) regex_vars[i] = NULL;
-
 /* If the program is called as "mailq" treat it as equivalent to "exim -bp";
 this seems to be a generally accepted convention, since one finds symbolic
 links called "mailq" in standard OS configurations. */
@@ -6084,7 +6082,7 @@
   deliver_localpart_data = deliver_domain_data =
   recipient_data = sender_data = NULL;
   acl_var_m = NULL;
-  for(int i = 0; i < REGEX_VARS; i++) regex_vars[i] = NULL;
+  regex_vars_clear();
 
   store_reset(reset_point);
   }
diff -ru a/src/expand.c b/src/expand.c
--- a/src/expand.c      2022-06-23 15:41:10.000000000 +0200
+++ b/src/expand.c      2022-10-18 13:38:30.368690000 +0200
@@ -1873,7 +1873,7 @@
   return node ? node->data.ptr : strict_acl_vars ? NULL : US"";
   }
 
-/* Handle $auth<n> variables. */
+/* Handle $auth<n>, $regex<n> variables. */
 
 if (Ustrncmp(name, "auth", 4) == 0)
   {
diff -ru a/src/functions.h b/src/functions.h
--- a/src/functions.h   2022-06-23 15:41:10.000000000 +0200
+++ b/src/functions.h   2022-10-18 13:39:21.953979000 +0200
@@ -438,6 +438,7 @@
 extern BOOL    regex_match(const pcre2_code *, const uschar *, int, uschar **);
 extern BOOL    regex_match_and_setup(const pcre2_code *, const uschar *, int, 
int);
 extern const pcre2_code *regex_must_compile(const uschar *, BOOL, BOOL);
+extern void    regex_vars_clear(void);
 extern void    retry_add_item(address_item *, uschar *, int);
 extern BOOL    retry_check_address(const uschar *, host_item *, uschar *, BOOL,
                  uschar **, uschar **);
Only in b/src: functions.h.rej
diff -ru a/src/globals.c b/src/globals.c
--- a/src/globals.c     2022-06-23 15:41:10.000000000 +0200
+++ b/src/globals.c     2022-10-18 13:46:22.093392000 +0200
@@ -1315,7 +1315,7 @@
 #endif
 const pcre2_code *regex_ismsgid      = NULL;
 const pcre2_code *regex_smtp_code    = NULL;
-const uschar *regex_vars[REGEX_VARS];
+const uschar *regex_vars[REGEX_VARS] = { 0 };
 #ifdef WHITELIST_D_MACROS
 const pcre2_code *regex_whitelisted_macro = NULL;
 #endif
Only in b/src: globals.c.rej
diff -ru a/src/regex.c b/src/regex.c
--- a/src/regex.c       2022-06-23 15:41:10.000000000 +0200
+++ b/src/regex.c       2022-10-18 13:43:13.041903000 +0200
@@ -96,18 +96,26 @@
 return FAIL;
 }
 
+/* reset expansion variables */
+void
+regex_vars_clear(void)
+{
+regex_match_string = NULL;
+for (int i = 0; i < REGEX_VARS; i++) regex_vars[i] = NULL;
+}
+
+
 int
-regex(const uschar **listptr)
+regex(const uschar ** listptr)
 {
 unsigned long mbox_size;
-FILE *mbox_file;
-pcre_list *re_list_head;
-uschar *linebuffer;
+FILE * mbox_file;
+pcre_list * re_list_head;
+uschar * linebuffer;
 long f_pos = 0;
 int ret = FAIL;
 
-/* reset expansion variable */
-regex_match_string = NULL;
+regex_vars_clear();
 
 if (!mime_stream)                              /* We are in the DATA ACL */
   {
@@ -169,14 +177,13 @@
 int
 mime_regex(const uschar **listptr)
 {
-pcre_list *re_list_head = NULL;
-FILE *f;
-uschar *mime_subject = NULL;
+pcre_list * re_list_head = NULL;
+FILE * f;
+uschar * mime_subject = NULL;
 int mime_subject_len = 0;
 int ret;
 
-/* reset expansion variable */
-regex_match_string = NULL;
+regex_vars_clear();
 
 /* precompile our regexes */
 if (!(re_list_head = compile(*listptr)))
diff -ru a/src/smtp_in.c b/src/smtp_in.c
--- a/src/smtp_in.c     2022-06-23 15:41:10.000000000 +0200
+++ b/src/smtp_in.c     2022-10-18 13:38:30.372819000 +0200
@@ -2157,8 +2157,10 @@
 #ifdef SUPPORT_I18N
 message_smtputf8 = FALSE;
 #endif
+regex_vars_clear();
 body_linecount = body_zerocount = 0;
 
+lookup_value = NULL;                           /* Can be set by ACL */
 sender_rate = sender_rate_limit = sender_rate_period = NULL;
 ratelimiters_mail = NULL;           /* Updated by ratelimit ACL condition */
                    /* Note that ratelimiters_conn persists across resets. */

Reply via email to