On 2019/02/24 13:10, Stuart Henderson wrote:
> On 2019/02/24 12:21, Landry Breuil wrote:
> > On Sun, Feb 24, 2019 at 10:02:08PM +1100, Stephen Gregoratto wrote:
> > > Ping for visibility.
> > > 
> > > I've been using this update on two machines for about a week now, and 
> > > there seems to be no loss in functionality/performance.
> > > 
> > > Comments, OKs?
> > 
> > Seems to work fine for me with my ruleset on 6.4. Nicholas, any opinion
> > ? since you're upstream...
> 
> I'd consider switching the port to use PCRE (diff below):
> 
> : %%% Should I use PCRE or standard POSIX regexps? What's the difference?
> : 
> : PCRE is a library providing "perl-compatible" regexps. These are broadly
> : compatible with POSIX extended regexps, but with a number of extensions 
> based
> : on perl regexps.
> : 
> : Unless you want or need some of the extensions, there is generally no
> : compelling reason to choose one over the other. PCRE is faster than some
> : POSIX regexp implementations, but few rulesets will include sufficient
> : regexps for this to make any difference. PCRE has had some security
> : problems, but most regexp implementations pose a similar risk for their
> : complexity if nothing else; fdm performs regexp matching as non-root in
> : any case.
> : 
> : The Debian package and FreeBSD port both use PCRE by default.
> : 
> : Because I hate maintaining and testing two sets of code, there is a strong
> : possibility that PCRE may become the fdm default at some point.
> 
> OK sthen@ either way though.

ping... to PCRE or not to PCRE? :)

> 
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/mail/fdm/Makefile,v
> retrieving revision 1.21
> diff -u -p -r1.21 Makefile
> --- Makefile  8 Mar 2016 17:30:43 -0000       1.21
> +++ Makefile  24 Feb 2019 13:10:08 -0000
> @@ -2,8 +2,7 @@
>  
>  COMMENT=     fetch, filter and deliver mail
>  
> -V=           1.9
> -REVISION =   0
> +V=           2.0
>  DISTNAME=    fdm-$V
>  CATEGORIES=  mail
>  
> @@ -12,13 +11,15 @@ MAINTAINER=       Nicholas Marriott <nicm@open
>  # BSD
>  PERMIT_PACKAGE_CDROM=        Yes
>  
> -WANTLIB= c crypto ssl z tdb>=3.0
> +WANTLIB= c crypto pcre ssl z tdb>=3.0
>  
>  MASTER_SITES=        https://github.com/nicm/fdm/releases/download/$V/
>  
> -LIB_DEPENDS +=       databases/tdb>=1.2.7
> +LIB_DEPENDS +=       databases/tdb>=1.2.7 \
> +             devel/pcre
>  
>  CONFIGURE_STYLE =    gnu
> +CONFIGURE_ARGS =     --enable-pcre
>  
>  post-install:
>       ${INSTALL_DATA_DIR} ${PREFIX}/share/fdm
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/mail/fdm/distinfo,v
> retrieving revision 1.11
> diff -u -p -r1.11 distinfo
> --- distinfo  3 Dec 2015 14:21:33 -0000       1.11
> +++ distinfo  24 Feb 2019 13:10:08 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (fdm-1.9.tar.gz) = FkFsOKmn4y0YciDMWuYaUUY9Xk5HQZxcUT9CJSPTmRQ=
> -SIZE (fdm-1.9.tar.gz) = 299916
> +SHA256 (fdm-2.0.tar.gz) = BrKMtreSVwvGHX4psT0q9GuS/qd+BYsrF+Eej37QzqQ=
> +SIZE (fdm-2.0.tar.gz) = 313596
> Index: patches/patch-fetch-mbox_c
> ===================================================================
> RCS file: patches/patch-fetch-mbox_c
> diff -N patches/patch-fetch-mbox_c
> --- patches/patch-fetch-mbox_c        8 Mar 2016 17:30:43 -0000       1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,64 +0,0 @@
> -Fix a bug in mbox parser.
> -
> -Some tools only escape "From " lines in mboxs if they follow a blank line. 
> fdm
> -would split at lines beginning "From " unconditionally.
> -
> -From upstream 91df796046ee2c36bccc9cfda27860b5bb9dd36d
> -
> -$OpenBSD: patch-fetch-mbox_c,v 1.1 2016/03/08 17:30:43 edd Exp $
> ---- fetch-mbox.c.orig        Fri Jun  5 19:30:34 2015
> -+++ fetch-mbox.c     Thu Feb 18 15:30:05 2016
> -@@ -404,9 +404,9 @@ fetch_mbox_state_mail(struct account *a, struct fetch_
> -     struct mail                     *m = fctx->mail;
> -     struct fetch_mbox_mbox          *fmbox;
> -     struct fetch_mbox_mail          *aux;
> --    char                            *line, *ptr, *lptr;
> --    size_t                           llen;
> --    int                              flushing;
> -+    char                            *line, *ptr, *last_line, *lptr;
> -+    size_t                           llen, n;
> -+    int                              flushing, from;
> - 
> -     /* Find current mbox and check for EOF. */
> -     fmbox = ARRAY_ITEM(&data->fmboxes, data->index);
> -@@ -443,7 +443,7 @@ fetch_mbox_state_mail(struct account *a, struct fetch_
> -      * trimmed later with minimal penalty).
> -      */
> -     flushing = 0;
> --    for (;;) {
> -+    for (last_line = NULL;; last_line = line) {
> -             /* Check for EOF. */
> -             if (data->off == fmbox->size) {
> -                     aux->size = data->off - aux->off;
> -@@ -459,10 +459,27 @@ fetch_mbox_state_mail(struct account *a, struct fetch_
> -             } else
> -                     data->off += ptr - line + 1;
> - 
> --            /* Check if the line is "From ". */
> --            if (line > fmbox->base &&
> --                ptr - line >= 5 && strncmp(line, "From ", 5) == 0) {
> --                    /* End of mail. */
> -+            /*
> -+             * Check if we have reached the end of this message at the next
> -+             * message's "From " line. To allow "From " inside message
> -+             * bodes, they can be escaped by prepending with '>'. Some
> -+             * tools escape all "From " lines; others only escape if they
> -+             * immediately follow a blank line. We accept only "From" lines
> -+             * which follow a blank line (\n or \r\n).
> -+             */
> -+            from = 1;
> -+            if (line == fmbox->base || last_line == NULL)
> -+                    from = 0;
> -+            else {
> -+                    n = line - last_line;
> -+                    if (n != 1 && n != 2)
> -+                            from = 0;
> -+                    else if (n == 1 && *last_line != '\n')
> -+                            from = 0;
> -+                    else if (n == 2 && memcmp(last_line, "\r\n", 2) != 0)
> -+                            from = 0;
> -+            }
> -+            if (from && ptr - line >= 5 && memcmp(line, "From ", 5) == 0) {
> -                     aux->size = (line - fmbox->base) - aux->off;
> -                     break;
> -             }
> 

Reply via email to