ph10 2005/11/15 10:08:25 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src ACKNOWLEDGMENTS
exim-src/src expand.c globals.c globals.h mime.c
readconf.c sieve.c
Log:
Add check_rfc2047_length to disable length checking for encoded words.
Revision Changes Path
1.262 +4 -0 exim/exim-doc/doc-txt/ChangeLog
1.38 +2 -1 exim/exim-src/ACKNOWLEDGMENTS
1.47 +2 -1 exim/exim-src/src/expand.c
1.42 +1 -0 exim/exim-src/src/globals.c
1.30 +1 -0 exim/exim-src/src/globals.h
1.13 +1 -1 exim/exim-src/src/mime.c
1.15 +1 -0 exim/exim-src/src/readconf.c
1.15 +1 -1 exim/exim-src/src/sieve.c
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.261
retrieving revision 1.262
diff -u -r1.261 -r1.262
--- ChangeLog 15 Nov 2005 09:44:33 -0000 1.261
+++ ChangeLog 15 Nov 2005 10:08:24 -0000 1.262
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.261 2005/11/15 09:44:33 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.262 2005/11/15 10:08:24 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -125,6 +125,10 @@
PH/13 After a successful wildlsearch lookup, discard the values of numeric
variables because (a) they are in the wrong storage pool and (b) even if
they were copied, it wouldn't work properly because of the caching.
+
+PH/14 Add check_rfc2047_length to disable enforcement of RFC 2047 length
+ checking when decoding. Apparently there are clients that generate
+ overlong encoded strings. Why am I not surprised?
Exim version 4.54
Index: ACKNOWLEDGMENTS
===================================================================
RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- ACKNOWLEDGMENTS 2 Nov 2005 16:32:58 -0000 1.37
+++ ACKNOWLEDGMENTS 15 Nov 2005 10:08:25 -0000 1.38
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.37 2005/11/02 16:32:58 ph10 Exp $
+$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.38 2005/11/15 10:08:25 ph10 Exp $
EXIM ACKNOWLEDGEMENTS
@@ -20,7 +20,7 @@
Philip Hazel
Lists created: 20 November 2002
-Last updated: 02 November 2005
+Last updated: 15 November 2005
THE OLD LIST
@@ -185,6 +185,7 @@
Suggested patch for SRV/MX lookup retry option
Nikos Mavrogiannopoulos GnuTLS proof of concept code
Update to RSA and D-H parameter caching code
+Komar Maxim Patch for check_rfc2047_length
Andy Mell Fix for rejectlog regeneration bug
Marc Merlin Many suggestions and patches for callouts and
SMTP error message features
Index: expand.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/expand.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- expand.c 12 Oct 2005 11:20:41 -0000 1.46
+++ expand.c 15 Nov 2005 10:08:25 -0000 1.47
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/expand.c,v 1.46 2005/10/12 11:20:41 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/expand.c,v 1.47 2005/11/15 10:08:25 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1205,7 +1205,8 @@
uschar *decoded, *error;
while (ptr > yield && isspace(ptr[-1])) ptr--;
*ptr = 0;
- decoded = rfc2047_decode2(yield, TRUE, charset, '?', NULL, newsize, &error);
+ decoded = rfc2047_decode2(yield, check_rfc2047_length, charset, '?', NULL,
+ newsize, &error);
if (error != NULL)
{
DEBUG(D_any) debug_printf("*** error in RFC 2047 decoding: %s\n"
Index: globals.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/globals.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- globals.c 14 Nov 2005 16:09:54 -0000 1.41
+++ globals.c 15 Nov 2005 10:08:25 -0000 1.42
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/globals.c,v 1.41 2005/11/14 16:09:54 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/globals.c,v 1.42 2005/11/15 10:08:25 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -372,6 +372,7 @@
uschar *check_dns_names_pattern= US"(?i)^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9-]*[^\\W_])?)+$";
int check_log_inodes = 0;
int check_log_space = 0;
+BOOL check_rfc2047_length = TRUE;
int check_spool_inodes = 0;
int check_spool_space = 0;
int clmacro_count = 0;
Index: globals.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/globals.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- globals.h 13 Sep 2005 11:13:27 -0000 1.29
+++ globals.h 15 Nov 2005 10:08:25 -0000 1.30
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/globals.h,v 1.29 2005/09/13 11:13:27 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/globals.h,v 1.30 2005/11/15 10:08:25 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -195,6 +195,7 @@
extern uschar *check_dns_names_pattern;/* Regex for syntax check */
extern int check_log_inodes; /* Minimum for message acceptance */
extern int check_log_space; /* Minimum for message acceptance */
+extern BOOL check_rfc2047_length; /* Check RFC 2047 encoded string length */
extern int check_spool_inodes; /* Minimum for message acceptance */
extern int check_spool_space; /* Minimum for message acceptance */
extern int clmacro_count; /* Number of command line macros */
Index: mime.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/mime.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- mime.c 16 Aug 2005 12:32:32 -0000 1.12
+++ mime.c 15 Nov 2005 10:08:25 -0000 1.13
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/mime.c,v 1.12 2005/08/16 12:32:32 tom Exp $ */
+/* $Cambridge: exim/exim-src/src/mime.c,v 1.13 2005/11/15 10:08:25 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -619,7 +619,7 @@
memset(param_value,0,param_value_len+1);
q = p + mime_parameter_list[j].namelen;
Ustrncpy(param_value, q, param_value_len);
- param_value = rfc2047_decode(param_value, TRUE, NULL, 32, ¶m_value_len, &q);
+ param_value = rfc2047_decode(param_value, check_rfc2047_length, NULL, 32, ¶m_value_len, &q);
debug_printf("Found %s MIME parameter in %s header, value is '%s'\n", mime_parameter_list[j].name, mime_header_list[i].name, param_value);
*((uschar **)(mime_parameter_list[j].value)) = param_value;
p += (mime_parameter_list[j].namelen + param_value_len + 1);
Index: readconf.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/readconf.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- readconf.c 19 Sep 2005 14:01:51 -0000 1.14
+++ readconf.c 15 Nov 2005 10:08:25 -0000 1.15
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/readconf.c,v 1.14 2005/09/19 14:01:51 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/readconf.c,v 1.15 2005/11/15 10:08:25 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -182,6 +182,7 @@
{ "callout_random_local_part",opt_stringptr, &callout_random_local_part },
{ "check_log_inodes", opt_int, &check_log_inodes },
{ "check_log_space", opt_Kint, &check_log_space },
+ { "check_rfc2047_length", opt_bool, &check_rfc2047_length },
{ "check_spool_inodes", opt_int, &check_spool_inodes },
{ "check_spool_space", opt_Kint, &check_spool_space },
{ "daemon_smtp_port", opt_stringptr|opt_hidden, &daemon_smtp_port },
Index: sieve.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/sieve.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- sieve.c 14 Nov 2005 11:41:23 -0000 1.14
+++ sieve.c 15 Nov 2005 10:08:25 -0000 1.15
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/sieve.c,v 1.14 2005/11/14 11:41:23 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/sieve.c,v 1.15 2005/11/15 10:08:25 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -800,7 +800,7 @@
*t++=*r++;
}
*t++='\0';
-value->character=rfc2047_decode(s,TRUE,US"utf-8",'\0',&value->length,&errmsg);
+value->character=rfc2047_decode(s,check_rfc2047_length,US"utf-8",'\0',&value->length,&errmsg);
}