Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package exim for openSUSE:Factory checked in 
at 2023-10-02 20:05:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/exim (Old)
 and      /work/SRC/openSUSE:Factory/.exim.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "exim"

Mon Oct  2 20:05:12 2023 rev:76 rq:1114826 version:4.96.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/exim/exim.changes        2023-04-04 
21:27:42.783676901 +0200
+++ /work/SRC/openSUSE:Factory/.exim.new.28202/exim.changes     2023-10-02 
20:06:45.559436481 +0200
@@ -1,0 +2,8 @@
+Mon Oct  2 05:53:32 UTC 2023 - Peter Wullinger <wullin...@rz.uni-kiel.de>
+
+- security update to exim 4.96.1
+  * fixes CVE-2023-42114 (bsc#1215784)
+  * fixes CVE-2023-42115 (bsc#1215785)
+  * fixes CVE-2023-42116 (bsc#1215786)
+
+-------------------------------------------------------------------

Old:
----
  exim-4.96.tar.bz2
  exim-4.96.tar.bz2.asc
  patch-cve-2022-3559

New:
----
  exim-4.96.1.tar.bz2
  exim-4.96.1.tar.bz2.asc

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

Other differences:
------------------
++++++ exim.spec ++++++
--- /var/tmp/diff_new_pack.IlUvlA/_old  2023-10-02 20:06:47.571508841 +0200
+++ /var/tmp/diff_new_pack.IlUvlA/_new  2023-10-02 20:06:47.575508985 +0200
@@ -74,8 +74,8 @@
 %endif
 Requires(pre):  fileutils textutils
 %endif
-Version:        4.96
-Release:        1
+Version:        4.96.1
+Release:        0
 %if %{with_mysql}
 BuildRequires:  mysql-devel
 %endif
@@ -106,7 +106,6 @@
 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
@@ -151,7 +150,6 @@
 %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"

++++++ exim-4.96.tar.bz2 -> exim-4.96.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/doc/ChangeLog new/exim-4.96.1/doc/ChangeLog
--- old/exim-4.96/doc/ChangeLog 2022-06-23 15:41:10.000000000 +0200
+++ new/exim-4.96.1/doc/ChangeLog       2023-09-30 22:52:59.000000000 +0200
@@ -2,6 +2,24 @@
 affect Exim's operation, with an unchanged configuration file.  For new
 options, and new features, see the NewStuff file next to this ChangeLog.
 
+Exim version 4.96.1
+-------------------
+
+This is a security release.
+
+JH/01 Bug 2999: Fix a possible OOB write in the external authenticator, which
+      could be triggered by externally-supplied input.  Found by Trend Micro.
+      CVE-2023-42115
+
+JH/02 Bug 3000: Fix a possible OOB write in the SPA authenticator, which could
+      be triggered by externally-controlled input.  Found by Trend Micro.
+      CVE-2023-42116
+
+JH/03 Bug 3001: Fix a possible OOB read in the SPA authenticator, which could
+      be triggered by externally-controlled input.  Found by Trend Micro.
+      CVE-2023-42114
+
+
 Exim version 4.96
 -----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/doc/filter.txt 
new/exim-4.96.1/doc/filter.txt
--- old/exim-4.96/doc/filter.txt        2022-06-25 15:36:30.000000000 +0200
+++ new/exim-4.96.1/doc/filter.txt      2023-10-02 12:25:25.000000000 +0200
@@ -4,7 +4,7 @@
 
 Copyright (c) 2021 The Exim Maintainers
 
-Revision 4.96  25 Jun 2022 PH
+Revision 4.96.1  02 Oct 2023 PH
 
 -------------------------------------------------------------------------------
 
@@ -72,7 +72,7 @@
 
 This document describes the user interfaces to Exim's in-built mail filtering
 facilities, and is copyright (c) The Exim Maintainers 2021. It corresponds to
-Exim version 4.96.
+Exim version 4.96.1.
 
 
 1.1 Introduction
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/doc/spec.txt new/exim-4.96.1/doc/spec.txt
--- old/exim-4.96/doc/spec.txt  2022-06-25 15:36:30.000000000 +0200
+++ new/exim-4.96.1/doc/spec.txt        2023-10-02 12:25:25.000000000 +0200
@@ -4,7 +4,7 @@
 
 Copyright (c) 2022 The Exim Maintainers
 
-Revision 4.96  25 Jun 2022 EM
+Revision 4.96.1  02 Oct 2023 EM
 
 -------------------------------------------------------------------------------
 
@@ -596,7 +596,7 @@
 1.1 Exim documentation
 ----------------------
 
-This edition of the Exim specification applies to version 4.96 of Exim.
+This edition of the Exim specification applies to version 4.96.1 of Exim.
 Substantive changes from the 4.95 edition are marked in some renditions of this
 document; this paragraph is so marked if the rendition is capable of showing a
 change indicator.
@@ -1723,7 +1723,7 @@
 
 Exim is distributed as a gzipped or bzipped tar file which, when unpacked,
 creates a directory with the name of the current release (for example,
-exim-4.96) into which the following files are placed:
+exim-4.96.1) into which the following files are placed:
 
     ACKNOWLEDGMENTS contains some acknowledgments
     CHANGES         contains a reference to where changes are documented
@@ -2345,7 +2345,7 @@
 For the utility programs, old versions are renamed by adding the suffix .O to
 their names. The Exim binary itself, however, is handled differently. It is
 installed under a name that includes the version number and the compile number,
-for example, exim-4.96-1. The script then arranges for a symbolic link called
+for example, exim-4.96.1-1. The script then arranges for a symbolic link called
 exim to point to the binary. If you are updating a previous version of Exim,
 the script takes care to ensure that the name exim is never absent from the
 directory (as seen by other processes).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/src/auths/auth-spa.c 
new/exim-4.96.1/src/auths/auth-spa.c
--- old/exim-4.96/src/auths/auth-spa.c  2022-06-23 15:41:10.000000000 +0200
+++ new/exim-4.96.1/src/auths/auth-spa.c        2023-09-30 22:52:59.000000000 
+0200
@@ -155,6 +155,9 @@
    up with a different answer to the one above)
 */
 
+#ifndef MACRO_PREDEF
+
+
 #define DEBUG_X(a,b) ;
 
 extern int DEBUGLEVEL;
@@ -1211,7 +1214,9 @@
 
 #define spa_bytes_add(ptr, header, buf, count) \
 { \
-if (buf && (count) != 0) /* we hate -Wint-in-bool-contex */ \
+if (  buf && (count) != 0      /* we hate -Wint-in-bool-contex */ \
+   && ptr->bufIndex + count < sizeof(ptr->buffer)              \
+   ) \
   { \
   SSVAL(&ptr->header.len,0,count); \
   SSVAL(&ptr->header.maxlen,0,count); \
@@ -1229,35 +1234,30 @@
 
 #define spa_string_add(ptr, header, string) \
 { \
-char *p = string; \
+uschar * p = string; \
 int len = 0; \
-if (p) len = strlen(p); \
-spa_bytes_add(ptr, header, (US p), len); \
+if (p) len = Ustrlen(p); \
+spa_bytes_add(ptr, header, p, len); \
 }
 
 #define spa_unicode_add_string(ptr, header, string) \
 { \
-char *p = string; \
-uschar *b = NULL; \
+uschar * p = string; \
+uschar * b = NULL; \
 int len = 0; \
 if (p) \
   { \
-  len = strlen(p); \
-  b = strToUnicode(p); \
+  len = Ustrlen(p); \
+  b = US strToUnicode(CS p); \
   } \
 spa_bytes_add(ptr, header, b, len*2); \
 }
 
 
-#define GetUnicodeString(structPtr, header) \
-unicodeToString(((char*)structPtr) + IVAL(&structPtr->header.offset,0) , 
SVAL(&structPtr->header.len,0)/2)
-#define GetString(structPtr, header) \
-toString(((CS structPtr) + IVAL(&structPtr->header.offset,0)), 
SVAL(&structPtr->header.len,0))
-
 #ifdef notdef
 
 #define DumpBuffer(fp, structPtr, header) \
-dumpRaw(fp,(US 
structPtr)+IVAL(&structPtr->header.offset,0),SVAL(&structPtr->header.len,0))
+ dumpRaw(fp,(US 
structPtr)+IVAL(&structPtr->header.offset,0),SVAL(&structPtr->header.len,0))
 
 
 static void
@@ -1321,8 +1321,33 @@
 return buf;
 }
 
+static inline uschar *
+get_challenge_unistr(SPAAuthChallenge * challenge, SPAStrHeader * hdr)
+{
+int off = IVAL(&hdr->offset, 0);
+int len = SVAL(&hdr->len, 0);
+return off + len < sizeof(SPAAuthChallenge)
+  ? US unicodeToString(CS challenge + off, len/2) : US"";
+}
+
+static inline uschar *
+get_challenge_str(SPAAuthChallenge * challenge, SPAStrHeader * hdr)
+{
+int off = IVAL(&hdr->offset, 0);
+int len = SVAL(&hdr->len, 0);
+return off + len < sizeof(SPAAuthChallenge)
+  ? US toString(CS challenge + off, len) : US"";
+}
+
 #ifdef notdef
 
+#define GetUnicodeString(structPtr, header) \
+ unicodeToString(((char*)structPtr) + IVAL(&structPtr->header.offset,0) , 
SVAL(&structPtr->header.len,0)/2)
+
+#define GetString(structPtr, header) \
+ toString(((CS structPtr) + IVAL(&structPtr->header.offset,0)), 
SVAL(&structPtr->header.len,0))
+
+
 void
 dumpSmbNtlmAuthRequest (FILE * fp, SPAAuthRequest * request)
 {
@@ -1366,15 +1391,15 @@
 #endif
 
 void
-spa_build_auth_request (SPAAuthRequest * request, char *user, char *domain)
+spa_build_auth_request (SPAAuthRequest * request, uschar * user, uschar * 
domain)
 {
-char *u = strdup (user);
-char *p = strchr (u, '@');
+uschar * u = string_copy(user);
+uschar * p = Ustrchr(u, '@');
 
 if (p)
   {
   if (!domain)
-   domain = p + 1;
+    domain = p + 1;
   *p = '\0';
   }
 
@@ -1384,7 +1409,6 @@
 SIVAL (&request->flags, 0, 0x0000b207);      /* have to figure out what these 
mean */
 spa_string_add (request, user, u);
 spa_string_add (request, domain, domain);
-free (u);
 }
 
 
@@ -1475,16 +1499,16 @@
 
 void
 spa_build_auth_response (SPAAuthChallenge * challenge,
-                        SPAAuthResponse * response, char *user,
-                        char *password)
+                        SPAAuthResponse * response, uschar * user,
+                        uschar * password)
 {
 uint8x lmRespData[24];
 uint8x ntRespData[24];
 uint32x cf = IVAL(&challenge->flags, 0);
-char *u = strdup (user);
-char *p = strchr (u, '@');
-char *d = NULL;
-char *domain;
+uschar * u = string_copy(user);
+uschar * p = Ustrchr(u, '@');
+uschar * d = NULL;
+uschar * domain;
 
 if (p)
   {
@@ -1492,33 +1516,33 @@
   *p = '\0';
   }
 
-else domain = d = strdup((cf & 0x1)?
-  CCS GetUnicodeString(challenge, uDomain) :
-  CCS GetString(challenge, uDomain));
+else domain = d = string_copy(cf & 0x1
+  ? CUS get_challenge_unistr(challenge, &challenge->uDomain)
+  : CUS get_challenge_str(challenge, &challenge->uDomain));
 
-spa_smb_encrypt (US password, challenge->challengeData, lmRespData);
-spa_smb_nt_encrypt (US password, challenge->challengeData, ntRespData);
+spa_smb_encrypt(password, challenge->challengeData, lmRespData);
+spa_smb_nt_encrypt(password, challenge->challengeData, ntRespData);
 
 response->bufIndex = 0;
 memcpy (response->ident, "NTLMSSP\0\0\0", 8);
 SIVAL (&response->msgType, 0, 3);
 
-spa_bytes_add (response, lmResponse, lmRespData, (cf & 0x200) ? 24 : 0);
-spa_bytes_add (response, ntResponse, ntRespData, (cf & 0x8000) ? 24 : 0);
+spa_bytes_add(response, lmResponse, lmRespData, cf & 0x200 ? 24 : 0);
+spa_bytes_add(response, ntResponse, ntRespData, cf & 0x8000 ? 24 : 0);
 
 if (cf & 0x1) {      /* Unicode Text */
-     spa_unicode_add_string (response, uDomain, domain);
-     spa_unicode_add_string (response, uUser, u);
-     spa_unicode_add_string (response, uWks, u);
+     spa_unicode_add_string(response, uDomain, domain);
+     spa_unicode_add_string(response, uUser, u);
+     spa_unicode_add_string(response, uWks, u);
 } else {             /* OEM Text */
-     spa_string_add (response, uDomain, domain);
-     spa_string_add (response, uUser, u);
-     spa_string_add (response, uWks, u);
+     spa_string_add(response, uDomain, domain);
+     spa_string_add(response, uUser, u);
+     spa_string_add(response, uWks, u);
 }
 
-spa_string_add (response, sessionKey, NULL);
+spa_string_add(response, sessionKey, NULL);
 response->flags = challenge->flags;
-
-if (d != NULL) free (d);
-free (u);
 }
+
+
+#endif   /*!MACRO_PREDEF*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/src/auths/auth-spa.h 
new/exim-4.96.1/src/auths/auth-spa.h
--- old/exim-4.96/src/auths/auth-spa.h  2022-06-23 15:41:10.000000000 +0200
+++ new/exim-4.96.1/src/auths/auth-spa.h        2023-09-30 22:52:59.000000000 
+0200
@@ -79,10 +79,10 @@
 
 void spa_bits_to_base64 (unsigned char *, const unsigned char *, int);
 int spa_base64_to_bits(char *, int, const char *);
-void spa_build_auth_response (SPAAuthChallenge *challenge,
-       SPAAuthResponse *response, char *user, char *password);
-void spa_build_auth_request (SPAAuthRequest *request, char *user,
-       char *domain);
+void spa_build_auth_response (SPAAuthChallenge * challenge,
+       SPAAuthResponse * response, uschar * user, uschar * password);
+void spa_build_auth_request (SPAAuthRequest * request, uschar * user,
+       uschar * domain);
 extern void spa_smb_encrypt (unsigned char * passwd, unsigned char * c8,
                              unsigned char * p24);
 extern void spa_smb_nt_encrypt (unsigned char * passwd, unsigned char * c8,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/src/auths/external.c 
new/exim-4.96.1/src/auths/external.c
--- old/exim-4.96/src/auths/external.c  2022-06-23 15:41:10.000000000 +0200
+++ new/exim-4.96.1/src/auths/external.c        2023-09-30 22:52:59.000000000 
+0200
@@ -103,7 +103,7 @@
 if (ob->server_param2)
   {
   uschar * s = expand_string(ob->server_param2);
-  auth_vars[expand_nmax] = s;
+  auth_vars[expand_nmax = 1] = s;
   expand_nstring[++expand_nmax] = s;
   expand_nlength[expand_nmax] = Ustrlen(s);
   if (ob->server_param3)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/src/auths/spa.c 
new/exim-4.96.1/src/auths/spa.c
--- old/exim-4.96/src/auths/spa.c       2022-06-23 15:41:10.000000000 +0200
+++ new/exim-4.96.1/src/auths/spa.c     2023-09-30 22:52:59.000000000 +0200
@@ -284,14 +284,13 @@
 SPAAuthChallenge challenge;
 SPAAuthResponse  response;
 char msgbuf[2048];
-char *domain = NULL;
-char *username, *password;
+uschar * domain = NULL, * username, * password;
 
 /* Code added by PH to expand the options */
 
 *buffer = 0;    /* Default no message when cancelled */
 
-if (!(username = CS expand_string(ob->spa_username)))
+if (!(username = expand_string(ob->spa_username)))
   {
   if (f.expand_string_forcedfail) return CANCELLED;
   string_format(buffer, buffsize, "expansion of \"%s\" failed in %s "
@@ -300,7 +299,7 @@
   return ERROR;
   }
 
-if (!(password = CS expand_string(ob->spa_password)))
+if (!(password = expand_string(ob->spa_password)))
   {
   if (f.expand_string_forcedfail) return CANCELLED;
   string_format(buffer, buffsize, "expansion of \"%s\" failed in %s "
@@ -310,7 +309,7 @@
   }
 
 if (ob->spa_domain)
-  if (!(domain = CS expand_string(ob->spa_domain)))
+  if (!(domain = expand_string(ob->spa_domain)))
     {
     if (f.expand_string_forcedfail) return CANCELLED;
     string_format(buffer, buffsize, "expansion of \"%s\" failed in %s "
@@ -330,7 +329,7 @@
 
 DSPA("\n\n%s authenticator: using domain %s\n\n", ablock->name, domain);
 
-spa_build_auth_request(&request, CS username, domain);
+spa_build_auth_request(&request, username, domain);
 spa_bits_to_base64(US msgbuf, US &request, spa_request_length(&request));
 
 DSPA("\n\n%s authenticator: sending request (%s)\n\n", ablock->name, msgbuf);
@@ -347,7 +346,7 @@
 DSPA("\n\n%s authenticator: challenge (%s)\n\n", ablock->name, buffer + 4);
 spa_base64_to_bits(CS (&challenge), sizeof(challenge), CCS (buffer + 4));
 
-spa_build_auth_response(&challenge, &response, CS username, CS password);
+spa_build_auth_response(&challenge, &response, username, password);
 spa_bits_to_base64(US msgbuf, US &response, spa_request_length(&response));
 DSPA("\n\n%s authenticator: challenge response (%s)\n\n", ablock->name, 
msgbuf);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/src/version.h new/exim-4.96.1/src/version.h
--- old/exim-4.96/src/version.h 2022-06-25 15:36:07.000000000 +0200
+++ new/exim-4.96.1/src/version.h       2023-10-02 12:24:59.000000000 +0200
@@ -1,5 +1,5 @@
 /* automatically generated file - see ../scripts/reversion */
-#define EXIM_RELEASE_VERSION "4.96"
+#define EXIM_RELEASE_VERSION "4.96.1"
 #ifdef EXIM_VARIANT_VERSION
 #define EXIM_VERSION_STR EXIM_RELEASE_VERSION "-" EXIM_VARIANT_VERSION
 #else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/exim-4.96/src/version.sh 
new/exim-4.96.1/src/version.sh
--- old/exim-4.96/src/version.sh        2022-06-25 15:36:07.000000000 +0200
+++ new/exim-4.96.1/src/version.sh      2023-10-02 12:24:59.000000000 +0200
@@ -1,3 +1,3 @@
 # automatically generated file - see ../scripts/reversion
-EXIM_RELEASE_VERSION="4.96"
+EXIM_RELEASE_VERSION="4.96.1"
 EXIM_COMPILE_NUMBER="1"

Reply via email to