At zmailer-2.99.39 there is bug in smtpserver's HELO syntax
parser, which manifests itself as faulty pointer arithmetics.
This fix hides the real problem by introducing a sanity limit
at how long a line can be -- assuming the errors are made
with hand-typed SMTP the lines can't be very long.

Anyway, without this a malformed SMTP HELO greeting can blow your
log-file (and remote user's senses).

       /Matti Aarnio <[email protected]>


--- smtpserver.c~       Fri Oct 25 21:46:53 1996
+++ smtpserver.c        Mon Oct 28 11:31:38 1996
@@ -2776,17 +2776,17 @@
       void *s1, *s2, *s3; /* XX: Propably not portable.. */
{
       char *s = inbuf+3+strlen(status)+1;
+       int maxcnt = 200;

       printf("%03d-%s ", code < 0 ? -code : code,status);
       if (logfp != NULL)
         fprintf(logfp, "%dw\t%03d-%s ", pid, code,status);
-       if (((int)(rfc821_error_ptr - s)) < 200)
-         while (s < rfc821_error_ptr) {
-           ++s;
-           putc(' ',stdout);
-           if (logfp != NULL)
-             putc(' ',logfp);
-         }
+       while (s < rfc821_error_ptr && --maxcnt >= 0) {
+         ++s;
+         putc(' ',stdout);
+         if (logfp != NULL)
+           putc(' ',logfp);
+       }
       printf("^\n");
       if (logfp != NULL)
         fprintf(logfp,"^\n");