Hi Wolfgang,

On 2012-05-26 10:05, Wolfgang Breyha wrote:
I had 4.77 running with gnutls but tried 4.80 with openssl 0.9.8x until
today....

I've built gnutls 2.12.19 from source. I build exim as before. If I try to
connect with thunderbird from Fedora 16 it fails to connect and exim logs:
...(gnutls_handshake): A TLS packet with unexpected length was received.

Connecting with openssl s_client shows an extensive amount of
25626 LOG: MAIN PANIC DIE
25626   string_format: unsupported type in "%z" in "tls_do_write(%p, %zu)
25626 "
in exim debug output.

Am I doing something terrible wrong?

I don't think you are; it looks like SIZE_T_FMT is "zu" on your system;
not unlikely given "man 3 printf" here.... and our debug_printf handling
doesn't understand "z" at all.

Could you try applying this patch and reporting the results?


diff --git a/src/src/string.c b/src/src/string.c
index 08e6045..64daae9 100644
--- a/src/src/string.c
+++ b/src/src/string.c
@@ -1134,7 +1134,7 @@ return yield;
 BOOL
 string_vformat(uschar *buffer, int buflen, const char *format, va_list ap)
 {
-enum { L_NORMAL, L_SHORT, L_LONG, L_LONGLONG, L_LONGDOUBLE };
+enum { L_NORMAL, L_SHORT, L_LONG, L_LONGLONG, L_LONGDOUBLE, L_SIZE };
BOOL yield = TRUE;
 int width, precision;
@@ -1223,6 +1223,8 @@ while (*fp != 0)
       length = L_LONG;
       }
     }
+  else if (*fp == 'z')
+    { fp++; length = L_SIZE; }
/* Handle each specific format type. */ @@ -1252,6 +1254,7 @@ while (*fp != 0)
       case L_NORMAL:   sprintf(CS p, newformat, va_arg(ap, int)); break;
       case L_LONG:     sprintf(CS p, newformat, va_arg(ap, long int)); break;
       case L_LONGLONG: sprintf(CS p, newformat, va_arg(ap, LONGLONG_T)); break;
+      case L_SIZE:     sprintf(CS p, newformat, va_arg(ap, size_t)); break;
       }
     while (*p) p++;
     break;



--
Cheers,
   Jeremy

--
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to