aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--configure.ac5
-rw-r--r--fetchmail-SA-2008-01.txt59
-rw-r--r--report.c4
4 files changed, 54 insertions, 16 deletions
diff --git a/NEWS b/NEWS
index d326c5a6..415e96dd 100644
--- a/NEWS
+++ b/NEWS
@@ -61,6 +61,8 @@ fetchmail 6.3.9 (not yet released):
random memory location (it calls va_arg() too often without
resetting it with va_start()). Based on a patch (BerliOS patch #2492)
by Petr Uzel, fixes Novell Bug #354291.
+ Note 6.3.9-rc1 did not completely fix this issue, so it was redrawn a few
+ hours after its release.
See also fetchmail-SA-2008-01.txt.
* When expunging, mark the right messages as seen to avoid message loss in "keep
flush" configurations. Workaround for previous versions: "expunge 0".
diff --git a/configure.ac b/configure.ac
index f972b547..7364a2fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,7 +8,7 @@ dnl Autoconfigure input file for fetchmail
dnl Process this file with autoconf to produce a configure script.
dnl
-AC_INIT([fetchmail],[6.3.9-rc1],[fetchmail-users@lists.berlios.de])
+AC_INIT([fetchmail],[6.3.9-rc2],[fetchmail-users@lists.berlios.de])
AC_CONFIG_SRCDIR([fetchmail.h])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_LIBOBJ_DIR([.])
@@ -61,6 +61,9 @@ AC_CHECK_HEADERS([unistd.h termios.h termio.h sgtty.h stdarg.h \
sys/itimer.h fcntl.h sys/fcntl.h memory.h sys/wait.h \
arpa/inet.h arpa/nameser.h netinet/in.h net/socket.h netdb.h \
sys/select.h sys/socket.h sys/time.h langinfo.h])
+if test _$ac_cv_header_stdarg_h != _yes ; then
+AC_MSG_WARN([stdarg.h is not defined. Unsupported configuration, proceed at your own risk.])
+fi
AC_CHECK_TYPE(u_int32_t,,
AC_DEFINE(u_int32_t,unsigned int,
[Define to unsigned int if <sys/types.h> does not define.]),
diff --git a/fetchmail-SA-2008-01.txt b/fetchmail-SA-2008-01.txt
index 18e330e7..40d2dd1a 100644
--- a/fetchmail-SA-2008-01.txt
+++ b/fetchmail-SA-2008-01.txt
@@ -6,7 +6,7 @@ fetchmail-SA-2008-01: Crash on large log messages in verbose mode
Topics: Crash in large log messages in verbose mode.
Author: Matthias Andree
-Version: 1.1
+Version: 1.2
Announced: 2008-06-17
Type: Dereferencing garbage pointer triggered by outside circumstances
Impact: denial of service possible
@@ -18,12 +18,14 @@ CVE Name: CVE-2008-2711
URL: http://www.fetchmail.info/fetchmail-SA-2008-01.txt
Project URL: http://www.fetchmail.info/
-Affects: fetchmail release < 6.3.9 exclusively
+Affects: fetchmail release before and excluding 6.3.9
+ fetchmail release candidate 6.3.9-rc1
Not affected: fetchmail release 6.3.9 and newer
- systems without varargs (stdargs.h) support.
+ fetchmail release candidate 6.3.9-rc2 and newer
+ systems without varargs support.
-Corrected: 2008-06-13 fetchmail SVN (rev 5193)
+Corrected: 2008-06-24 fetchmail SVN (rev 5205)
References: <https://bugzilla.novell.com/show_bug.cgi?id=354291>
<http://developer.berlios.de/patch/?func=detailpatch&patch_id=2492&group_id=1824>
@@ -36,6 +38,7 @@ References: <https://bugzilla.novell.com/show_bug.cgi?id=354291>
posted to oss-security)
2008-06-17 1.0 published on http://www.fetchmail.info/
2008-06-17 1.1 Corrected typo in Type: above (trigged -> triggered)
+2008-06-24 1.2 also fixed issue in report_complete (reported by Petr Uzel)
1. Background
@@ -116,31 +119,38 @@ THIS WORK IS PROVIDED FREE OF CHARGE AND WITHOUT ANY WARRANTIES.
Use the information herein at your own risk.
-
B. Patch to remedy the problem
==============================
+Note that when taking this from a GnuPG clearsigned file, the lines
+starting with a "-" character are prefixed by another "- " (dash +
+blank) combination. Either feed this file through GnuPG to strip them,
+or strip them manually.
+
+Whitespace differences can usually be ignored by invoking "patch -l",
+so try this if the patch does not apply.
+
diff --git a/report.c b/report.c
-index 31d4e48..2a731ac 100644
+index 31d4e48..320e60b 100644
- --- a/report.c
+++ b/report.c
@@ -238,11 +238,17 @@ report_build (FILE *errfp, message, va_alist)
rep_ensuresize();
-
+
#if defined(VA_START)
- - VA_START (args, message);
for ( ; ; )
{
+ /*
-+ * args has to be initialized before every call of vsnprintf(),
-+ * because vsnprintf() invokes va_arg macro and thus args is
++ * args has to be initialized before every call of vsnprintf(),
++ * because vsnprintf() invokes va_arg macro and thus args is
+ * undefined after the call.
+ */
+ VA_START(args, message);
n = vsnprintf (partial_message + partial_message_size_used, partial_message_size - partial_message_size_used,
message, args);
+ va_end (args);
-
+
if (n >= 0
&& (unsigned)n < partial_message_size - partial_message_size_used)
@@ -254,7 +260,6 @@ report_build (FILE *errfp, message, va_alist)
@@ -151,12 +161,35 @@ index 31d4e48..2a731ac 100644
#else
for ( ; ; )
{
+@@ -304,12 +309,13 @@ report_complete (FILE *errfp, message, va_alist)
+ rep_ensuresize();
+
+ #if defined(VA_START)
+- - VA_START (args, message);
+ for ( ; ; )
+ {
++ VA_START(args, message);
+ n = vsnprintf (partial_message + partial_message_size_used,
+ partial_message_size - partial_message_size_used,
+ message, args);
++ va_end(args);
+
+ /* old glibc versions return -1 for truncation */
+ if (n >= 0
+@@ -322,7 +328,6 @@ report_complete (FILE *errfp, message, va_alist)
+ partial_message_size += 2048;
+ partial_message = REALLOC (partial_message, partial_message_size);
+ }
+- - va_end (args);
+ #else
+ for ( ; ; )
+ {
END OF fetchmail-SA-2008-01.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
-iD8DBQFIV7e+vmGDOQUufZURAiAUAKCG1pBXEdVJPUr4WeIZXAr01jshkwCgvfb8
-6qqG2gZonX24W58gBEQ7Pjw=
-=vwYl
+iD8DBQFIYPBuvmGDOQUufZURAuj8AJ9IbN/UMcML6NLKSI0keQzGVGzZSQCg+UCP
+tUVNigLK8Xz40J2Eg7PD8Xs=
+=HAmn
-----END PGP SIGNATURE-----
diff --git a/report.c b/report.c
index 2a731acb..320e60be 100644
--- a/report.c
+++ b/report.c
@@ -309,12 +309,13 @@ report_complete (FILE *errfp, message, va_alist)
rep_ensuresize();
#if defined(VA_START)
- VA_START (args, message);
for ( ; ; )
{
+ VA_START(args, message);
n = vsnprintf (partial_message + partial_message_size_used,
partial_message_size - partial_message_size_used,
message, args);
+ va_end(args);
/* old glibc versions return -1 for truncation */
if (n >= 0
@@ -327,7 +328,6 @@ report_complete (FILE *errfp, message, va_alist)
partial_message_size += 2048;
partial_message = REALLOC (partial_message, partial_message_size);
}
- va_end (args);
#else
for ( ; ; )
{