"Ted Unangst" <[email protected]> writes:
> 
> Thanks for reminding me to revisit this. I think the following diff is
> sufficient.

Still works fine for me, thanks.

/gabriel

> 
> 
> Index: kern_sysctl.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/kern_sysctl.c,v
> retrieving revision 1.305
> diff -u -p -r1.305 kern_sysctl.c
> --- kern_sysctl.c     27 May 2016 19:45:04 -0000      1.305
> +++ kern_sysctl.c     28 Jun 2016 20:43:30 -0000
> @@ -1980,16 +1980,11 @@ sysctl_proc_vmmap(int *name, u_int namel
>               if (findpr->ps_flags & (PS_SYSTEM | PS_EXITING))
>                       return (EINVAL);
>  
> -#if 1
> -             /* XXX Allow only root for now */
> -             if ((error = suser(cp, 0)) != 0)
> -                     return (error);
> -#else
>               /* Only owner or root can get vmmap */
> -             if (findpr->ps_ucred->cr_uid != cp->p_ucred->cr_uid &&
> +             if ((findpr->ps_ucred->cr_uid != cp->p_ucred->cr_uid ||
> +                 ISSET(findpr->ps_flags, PS_SUGIDEXEC | PS_SUGID)) &&
>                   (error = suser(cp, 0)) != 0)
>                       return (error);
> -#endif
>       } else {
>               /* Only root can get kernel_map */
>               if ((error = suser(cp, 0)) != 0)

Reply via email to