fetchmail: update for revised SA-2008-01, FS#314

This commit is contained in:
Juergen Daubert 2008-06-25 09:27:40 +02:00
parent f72c3a4b59
commit 7932b86f02
4 changed files with 79 additions and 7 deletions

View File

@ -1,3 +1,3 @@
66b97500b0a1e3c0916b3b5314f597f5 fetchmail-6.3.8.tar.bz2
0105fd95ac563a02f20a40355d731159 fetchmail-SA-2007-02.txt
6d2815ed781b18e1fbd53fb431b50f2d fetchmail-SA-2008-01.txt
b9f0ce8114529c1305dff4c02a49043a fetchmail-SA-2007-02.patch
2a5a81690b9dc68d476f390631d22909 fetchmail-SA-2008-01.patch

View File

@ -5,16 +5,15 @@
name=fetchmail
version=6.3.8
release=3
release=4
source=(http://download.berlios.de/$name/$name-$version.tar.bz2
http://www.fetchmail.info/fetchmail-SA-2007-02.txt
http://www.fetchmail.info/fetchmail-SA-2008-01.txt)
$name-SA-2007-02.patch $name-SA-2008-01.patch)
build() {
cd $name-$version
patch -p0 -i $SRC/$name-SA-2007-02.txt
patch -p1 -i $SRC/$name-SA-2008-01.txt
patch -p0 -i $SRC/$name-SA-2007-02.patch
patch -p1 -i $SRC/$name-SA-2008-01.patch
./configure --prefix=/usr \
--mandir=/usr/man \

View File

@ -0,0 +1,16 @@
# http://www.fetchmail.info/fetchmail-SA-2007-02.txt
Index: sink.c
===================================================================
- --- sink.c (revision 5118)
+++ sink.c (revision 5119)
@@ -262,7 +262,7 @@
const char *md1 = "MAILER-DAEMON", *md2 = "MAILER-DAEMON@";
/* don't bounce in reply to undeliverable bounces */
- - if (!msg->return_path[0] ||
+ if (!msg || !msg->return_path[0] ||
strcmp(msg->return_path, "<>") == 0 ||
strcasecmp(msg->return_path, md1) == 0 ||
strncasecmp(msg->return_path, md2, strlen(md2)) == 0)

View File

@ -0,0 +1,57 @@
# http://www.fetchmail.info/fetchmail-SA-2008-01.txt
diff --git a/report.c b/report.c
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
+ * 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)
partial_message_size += 2048;
partial_message = REALLOC (partial_message, partial_message_size);
}
- - va_end (args);
#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 ( ; ; )
{