Re: [Exim] exim & mutt & freebsd - any issues?

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Philip Hazel
Date:  
À: Matthew Byng-Maddick
CC: Jim Pazarena, exim-users
Sujet: Re: [Exim] exim & mutt & freebsd - any issues?
On Thu, 18 Jul 2002, Matthew Byng-Maddick wrote:

> On Wed, Jul 17, 2002 at 10:31:43PM -0700, Jim Pazarena wrote:
> > I just started using 'mutt' a couple of days ago, and find that I get
> > an exim 4.05 panic when I send an  email with "BCC:".
> > a panic message was:
> > 2002-07-17 21:15:52 17V28L-000H2T-00 internal error: store_reset (135118849)
> >          failed: pool=0       expand.c 3047

>
> This looks remarkably like what happens when you have an empty To: header
> and the patch that Philip Hazel posted to the list a few days back. I'd
> find it for you, but I haven't yet woken up and had coffee...


Yes, that certainly looks like that bug. Not only an empty To: but any
empty address header that gets referred to in an expansion. This is
fixed in 4.10 (out next week), but here again is the patch for 4.05.

--
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.




*** exim-4.05/src/expand.c  Thu Jun 13 10:32:04 2002
--- expand.c    Mon Jul  1 10:09:01 2002
***************
*** 640,646 ****
              }
            Ustrncpy(ptr, t, ilen);
            ptr += ilen;
!           if (comma != 0)
              {
              ptr[-1] = ',';
              *ptr++ = '\n';
--- 640,646 ----
              }
            Ustrncpy(ptr, t, ilen);
            ptr += ilen;
!           if (comma != 0 && ilen > 0)
              {
              ptr[-1] = ',';
              *ptr++ = '\n';
***************
*** 665,671 ****
  /* Remove trailing white space (includes newlines) and a redundant added comma
  if present. */


! if (comma != 0) ptr -= 2;
while (ptr > yield && isspace(ptr[-1])) ptr--;
*ptr = 0;
return yield;
--- 665,671 ----
/* Remove trailing white space (includes newlines) and a redundant added comma
if present. */

! if (comma != 0 && ptr > yield) ptr -= 2;
while (ptr > yield && isspace(ptr[-1])) ptr--;
*ptr = 0;
return yield;