Hello.
this patch corrects segfaults in mail/libetpan port.
found while trying to debug claws-mail coredumps.
============================================================
diff -ur libetpan-1.0-orig/build-windows/libetpan_version.h
libetpan-1.0/build-windows/libetpan_version.h ---
libetpan-1.0-orig/build-windows/libetpan_version.h Sun Sep 6
03:34:44 2009 +++ libetpan-1.0/build-windows/libetpan_version.h
Wed Nov 9 12:15:30 2011 @@ -34,11 +34,11 @@ #define LIBETPAN_VERSION_H
#ifndef LIBETPAN_VERSION_MAJOR
-#define LIBETPAN_VERSION_MAJOR 0
+#define LIBETPAN_VERSION_MAJOR 1
#endif
#ifndef LIBETPAN_VERSION_MINOR
-#define LIBETPAN_VERSION_MINOR 58
+#define LIBETPAN_VERSION_MINOR 0
#endif
#ifndef LIBETPAN_REENTRANT
diff -ur libetpan-1.0-orig/src/data-types/mailstream_helper.c
libetpan-1.0/src/data-types/mailstream_helper.c ---
libetpan-1.0-orig/src/data-types/mailstream_helper.c Thu Feb 21
00:15:50 2008 +++
libetpan-1.0/src/data-types/mailstream_helper.c Thu Nov 10
17:40:11 2011 @@ -44,7 +44,8 @@ static void
remove_trailing_eol(MMAPString * mmapstr) {
- if (mmapstr->str[mmapstr->len - 1] == '\n') {
+ if(mmapstr && mmapstr->str && mmapstr->len > 0 ){
+ if (mmapstr->str[mmapstr->len - 1] == '\n') {
mmapstr->len --;
mmapstr->str[mmapstr->len] = '\0';
}
@@ -53,6 +54,7 @@
mmapstr->str[mmapstr->len] = '\0';
}
}
+}
char * mailstream_read_line(mailstream * stream, MMAPString * line)
{
@@ -113,12 +115,17 @@
char * mailstream_read_line_remove_eol(mailstream * stream, MMAPString
* line) {
- if (!mailstream_read_line(stream, line))
+ if (stream && line){
+ if (!mailstream_read_line(stream, line))
return NULL;
remove_trailing_eol(line);
return line->str;
+ }
+else {
+ return NULL;
+}
}
int mailstream_is_end_multiline(const char * line)
diff -ur libetpan-1.0-orig/src/low-level/feed/parser.c
libetpan-1.0/src/low-level/feed/parser.c ---
libetpan-1.0-orig/src/low-level/feed/parser.c Mon Sep 7
01:20:26 2009 +++ libetpan-1.0/src/low-level/feed/parser.c Wed
Nov 9 12:44:48 2011 @@ -41,9 +41,7 @@ #include <stdio.h>
#include <errno.h>
-#ifdef HAVE_ICONV
#include <iconv.h>
-#endif
#include "newsfeed.h"
@@ -230,7 +228,7 @@
return LEP_ICONV_OK;
}
#else
- return LEP_ICONV_FAIL;
+ return LEP_ICONV_FAILED;
#endif
}
diff -ur libetpan-1.0-orig/src/low-level/nntp/newsnntp.c
libetpan-1.0/src/low-level/nntp/newsnntp.c ---
libetpan-1.0-orig/src/low-level/nntp/newsnntp.c Mon Apr 5
17:21:36 2010 +++ libetpan-1.0/src/low-level/nntp/newsnntp.c Thu
Nov 10 10:38:13 2011 @@ -1338,7 +1338,7 @@ r = send_command(f, command);
if (r == -1)
return NEWSNNTP_ERROR_STREAM;
-
+ if(f)
response = read_line(f);
if (response == NULL)
return NEWSNNTP_ERROR_STREAM;
@@ -1816,7 +1816,8 @@
static char * read_line(newsnntp * f)
{
- return mailstream_read_line_remove_eol(f->nntp_stream,
f->nntp_stream_buffer);
+ if (f && f->nntp_stream && f->nntp_stream_buffer)
+ return mailstream_read_line_remove_eol(f->nntp_stream,
f->nntp_stream_buffer); }
static char * read_multiline(newsnntp * f, size_t size,
--
With best regards,
Gregory Edigarov