You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by si...@apache.org on 2005/11/27 08:46:46 UTC

svn commit: r349191 - in /spamassassin/trunk: spamc/libspamc.c t/data/spam/bsmtpnull t/spamc_B.t

Author: sidney
Date: Sat Nov 26 23:46:39 2005
New Revision: 349191

URL: http://svn.apache.org/viewcvs?rev=349191&view=rev
Log:
bug 4707: Fix seg fault when spamc given short invalid input with -B option, add test case for it

Added:
    spamassassin/trunk/t/data/spam/bsmtpnull   (with props)
Modified:
    spamassassin/trunk/spamc/libspamc.c
    spamassassin/trunk/t/spamc_B.t

Modified: spamassassin/trunk/spamc/libspamc.c
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/spamc/libspamc.c?rev=349191&r1=349190&r2=349191&view=diff
==============================================================================
--- spamassassin/trunk/spamc/libspamc.c (original)
+++ spamassassin/trunk/spamc/libspamc.c Sat Nov 26 23:46:39 2005
@@ -536,16 +536,15 @@
     if (m->raw_len > m->max_len)
 	return EX_TOOBIG;
     m->pre = m->raw;
-    for (i = 0; i < m->raw_len - 6; i++) {
-	if ((m->raw[i] == '\n') &&
-	    (m->raw[i + 1] == 'D' || m->raw[i + 1] == 'd') &&
-	    (m->raw[i + 2] == 'A' || m->raw[i + 2] == 'a') &&
-	    (m->raw[i + 3] == 'T' || m->raw[i + 3] == 't') &&
-	    (m->raw[i + 4] == 'A' || m->raw[i + 4] == 'a') &&
-	    ((m->raw[i + 5] == '\r' && m->raw[i + 6] == '\n')
-	     || m->raw[i + 5] == '\n')) {
+    for (i = 6; i < m->raw_len; i++) {
+	if ((m->raw[i - 6] == '\n') &&
+	    (m->raw[i - 5 ] == 'D' || m->raw[i - 5] == 'd') &&
+	    (m->raw[i - 4] == 'A' || m->raw[i - 4] == 'a') &&
+	    (m->raw[i - 3] == 'T' || m->raw[i - 3] == 't') &&
+	    (m->raw[i - 2] == 'A' || m->raw[i - 2] == 'a') &&
+	    ((m->raw[i - 1] == '\r' && m->raw[i] == '\n')
+	     || m->raw[i - 1] == '\n')) {
 	    /* Found it! */
-	    i += 6;
 	    if (m->raw[i - 1] == '\r')
 		i++;
 	    m->pre_len = i;

Added: spamassassin/trunk/t/data/spam/bsmtpnull
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/t/data/spam/bsmtpnull?rev=349191&view=auto
==============================================================================
--- spamassassin/trunk/t/data/spam/bsmtpnull (added)
+++ spamassassin/trunk/t/data/spam/bsmtpnull Sat Nov 26 23:46:39 2005
@@ -0,0 +1 @@
+

Propchange: spamassassin/trunk/t/data/spam/bsmtpnull
------------------------------------------------------------------------------
    svn:executable = *

Modified: spamassassin/trunk/t/spamc_B.t
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/t/spamc_B.t?rev=349191&r1=349190&r2=349191&view=diff
==============================================================================
--- spamassassin/trunk/t/spamc_B.t (original)
+++ spamassassin/trunk/t/spamc_B.t Sat Nov 26 23:46:39 2005
@@ -3,7 +3,7 @@
 use lib '.'; use lib 't';
 use SATest; sa_t_init("spamc_B");
 
-use Test; plan tests => ($SKIP_SPAMC_TESTS ? 0 : 8);
+use Test; plan tests => ($SKIP_SPAMC_TESTS ? 0 : 9);
 
 exit if $SKIP_SPAMC_TESTS;
 # ---------------------------------------------------------------------------
@@ -26,6 +26,7 @@
 );
 
 start_spamd("-L");
+ok (spamcrun ("-B < data/spam/bsmtpnull", \&patterns_run_cb));
 ok (spamcrun ("-B < data/spam/bsmtp", \&patterns_run_cb));
 ok_all_patterns();
 stop_spamd();