On Mon, Feb 01, 2021 at 08:18:53PM +0000, Josh Rickmar wrote:
> The kern.somaxconn sysctl was previously permitted under the inet
> pledge, which allowed pledged Go applications to listen on AF_INET and
> AF_INET6 domains.
> 
> https://marc.info/?l=openbsd-tech&m=158069595809463&w=2
> https://marc.info/?l=openbsd-cvs&m=158081099810301&w=2
> 
> But Go will also read this sysctl when only using unix domain sockets.
> The patch below additionally permits reading this sysctl if the unix
> pledge is granted.
> 
> Note that for this to be tested and useful (where useful means not
> running with the inet pledge), Go's net package also needs a patch:
> https://gist.github.com/jrick/878236e2f3735d35d5a737936439cb81
> 
> diff b17f936e67043f9c006633bac4e3630f86dd05c2 /usr/src
> blob - 9ffb7f2ffb9d05d6dd741e180b62141fb5e91f0b
> file + sys/kern/kern_pledge.c
> --- sys/kern/kern_pledge.c
> +++ sys/kern/kern_pledge.c
> @@ -888,7 +888,7 @@ pledge_sysctl(struct proc *p, int miblen, int *mib, vo
>                       return (0);
>       }
>  
> -     if ((p->p_p->ps_pledge & PLEDGE_INET)) {
> +     if ((p->p_p->ps_pledge & (PLEDGE_INET | PLEDGE_UNIX))) {
>               if (miblen == 2 &&              /* kern.somaxconn */
>                   mib[0] == CTL_KERN && mib[1] == KERN_SOMAXCONN)
>                       return (0);

Ping.

The necessary Go patch just landed in their development branch, and
should appear in Go 1.17 at the very latest.

Reply via email to