On 9/18/20 8:55 AM, Martijn van Duren wrote:
> That's what you get if you're doing a quick diff on the job.
> Missed a free case which is in Edgar's original diff.
> 
> Noticed by tb@
> 

Thanks a lot for modifications.
Yes, I've tested the new version and am able to send mails with 
a ~3050 line file in the table.

Aisha

> On Fri, 2020-09-18 at 14:46 +0200, Martijn van Duren wrote:
>> Could you try the diff below?
>> It should do exactly the same thing with less code.
>>
>> martijn@
>>
>> On Fri, 2020-09-18 at 08:30 -0400, Aisha Tammy wrote:
>>> Hi,
>>>
>>>   Edgar (cc'ed) has kindly provided patches to fix a buffer error in 
>>> mailaddr.c
>>> for opensmtpd.
>>>
>>> I've minimally tested it and am forwarding the patches.
>>>
>>> Would like to be able to get them into 6.8 release as this is quite 
>>> problematic 
>>> with lots of aliases.
>>>
>>> Thanks,
>>> Aisha
>>>
>>>
>>> -------- Forwarded Message --------
>>> Subject: Re: opensmtpd can't handle long lines in aliases table
>>> Date: Thu, 6 Aug 2020 19:47:33 -0500
>>> From: Edgar Pettijohn <ed...@pettijohn-web.com>
>>> To: AIsha Tammy <openbsd.b...@aisha.cc>
>>>
>>> Here are a few simple patches as discussed. These were written to apply
>>> against current. However, they are pretty simple and may well apply to
>>> others. With that in mind if you are using any filters they may not
>>> work. My production system is still a couple version behind and the
>>> current smtpd wouldn't work with some of my custom filters. So I had to
>>> use a fairly basic temporary config for testing. I'm also including my
>>> test <senders> table.
>>>
>>> Steps involved: (untested off memory mostly, use doas as necessary)
>>>
>>> cd /usr
>>> cvs -d $CVSROOT checkout src
>>>
>>> cp *.patch /usr/src/usr.sbin/smtpd
>>> cd /usr/src/usr.sbin/smtpd
>>>
>>> for file in `ls *.patch`
>>> do
>>> patch < $file
>>> done
>>>
>>> make
>>> rcctl stop smtpd
>>>
>>> #use the just built version at /usr/src/usr.sbin/smtpd/smtpd/smtpd
>>> smtpd/smtpd -d -T expand
>>>
>>> send a test email
>>>
>>> if all goes well run it for an appropriat amount of time and make sure
>>> there are not issues. If your satisfied send the patches to bugs@.
>>>
>>> Enjoy,
>>>
>>> Edgar
>>>
> Index: mailaddr.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/mailaddr.c,v
> retrieving revision 1.3
> diff -u -p -r1.3 mailaddr.c
> --- mailaddr.c        31 May 2018 21:06:12 -0000      1.3
> +++ mailaddr.c        18 Sep 2020 12:55:41 -0000
> @@ -80,12 +80,10 @@ int
>  mailaddr_line(struct maddrmap *maddrmap, const char *s)
>  {
>       struct maddrnode        mn;
> -     char                    buffer[LINE_MAX];
> -     char                   *p, *subrcpt;
> +     char                   *p, *subrcpt, *buffer;
>       int                     ret;
>  
> -     memset(buffer, 0, sizeof buffer);
> -     if (strlcpy(buffer, s, sizeof buffer) >= sizeof buffer)
> +     if ((buffer = strdup(s)) == NULL)
>               return 0;
>  
>       p = buffer;
> @@ -93,11 +91,15 @@ mailaddr_line(struct maddrmap *maddrmap,
>               subrcpt = strip(subrcpt);
>               if (subrcpt[0] == '\0')
>                       continue;
> -             if (!text_to_mailaddr(&mn.mailaddr, subrcpt))
> +             if (!text_to_mailaddr(&mn.mailaddr, subrcpt)) {
> +                     free(buffer);
>                       return 0;
> +             }
>               log_debug("subrcpt: [%s]", subrcpt);
>               maddrmap_insert(maddrmap, &mn);
>       }
> +
> +     free(buffer);
>  
>       if (ret >= 0)
>               return 1;
> 

Reply via email to