Daniel Eisele([email protected]) on 2020.07.15 09:32:37 +0200:
> Hi,
> 
> I'm currently porting acme-client to FreeBSD and while doing that I've
> noticed a few small issues.
> 
> src/usr.sbin/acme-client/parse.y:
> * The grammar allows the user to omit the newline after the first line
>   in a domain or authority block.

Yes. I'm still pnodering this. What are the chances that someone does that?

Probably no one does, but it worthwhile to break someones config for such a
change?

> * The grammar uses right recursion for lists, left recursion is
>   probably the better option here
>   (https://docs.oracle.com/cd/E19504-01/802-5880/yacc-13/index.html)
> 
> src/usr.sbin/acme-client/dbg.c doesn't build because in the included
> header file extern.h the type pid_t is missing (unistd.h).

extern.h should #include <sys/types.h> for that, no?

> src/usr.sbin/acme-client/dnsproc.c also fails to build because
> struct sockaddr_in and struct sockaddr_in6 are missing (netinet/in.h).

correct.

> The missing header files only cause a build failure on FreeBSD, but I
> think it would still be a good idea to fix them in OpenBSD...
> 
> Regards,
> Daniel Eisele
> 
> --- parse.y.orig      2020-07-10 12:36:30 UTC
> +++ parse.y
> @@ -170,11 +170,11 @@ varset          : STRING '=' string             {
>               }
>               ;
> 
> -optnl                : '\n' optnl
> +optnl                : nl
>               |
>               ;
> 
> -nl           : '\n' optnl            /* one newline or more */
> +nl           : optnl '\n'            /* one newline or more */
>               ;
> 
>  comma                : ','
> @@ -190,7 +190,7 @@ authority : AUTHORITY STRING {
>                               yyerror("authority already defined");
>                               YYERROR;
>                       }
> -             } '{' optnl authorityopts_l '}' {
> +             } '{' optnl authorityopts_l optnl '}' {
>                       if (auth->api == NULL) {
>                               yyerror("authority %s: no api URL specified",
>                                   auth->name);
> @@ -205,8 +205,8 @@ authority : AUTHORITY STRING {
>               }
>               ;
> 
> -authorityopts_l      : authorityopts_l authorityoptsl nl
> -             | authorityoptsl optnl
> +authorityopts_l      : authorityopts_l nl authorityoptsl
> +             | authorityoptsl
>               ;
> 
>  authorityoptsl       : API URL STRING {
> @@ -246,7 +246,7 @@ domain            : DOMAIN STRING {
>                               yyerror("domain already defined");
>                               YYERROR;
>                       }
> -             } '{' optnl domainopts_l '}' {
> +             } '{' optnl domainopts_l optnl '}' {
>                       if (domain->domain == NULL) {
>                               if ((domain->domain = strdup(domain->handle))
>                                   == NULL)
> @@ -273,8 +273,8 @@ keytype           : RSA   { $$ = KT_RSA; }
>               |       { $$ = KT_RSA; }
>               ;
> 
> -domainopts_l : domainopts_l domainoptsl nl
> -             | domainoptsl optnl
> +domainopts_l : domainopts_l nl domainoptsl
> +             | domainoptsl
>               ;
> 
>  domainoptsl  : ALTERNATIVE NAMES '{' altname_l '}'
> @@ -385,7 +385,7 @@ domainoptsl       : ALTERNATIVE NAMES '{' altname_l '}'
>               }
>               ;
> 
> -altname_l    : altname comma altname_l
> +altname_l    : altname_l comma altname
>               | altname
>               ;
> 

Reply via email to