Date: Thu, 27 Jul 2006 11:28:19 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-hackers@freebsd.org Cc: =?utf-8?q?=E6=9D=8E=E5=B0=9A=E6=9D=B0?= <shangjie.li@gmail.com> Subject: Re: A question about ipcperm() call? Message-ID: <200607271128.20025.jhb@freebsd.org> In-Reply-To: <de71d27b0607231907o6a7567bdy81e1a6d613b88c82@mail.gmail.com> References: <de71d27b0607231907o6a7567bdy81e1a6d613b88c82@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 23 July 2006 22:07, =E6=9D=8E=E5=B0=9A=E6=9D=B0 wrote: > The code for ipcperm() call : > 93 if (mode & IPC_M) { > 94 error =3D suser(td); > 95 if (error) > 96 return (error); > 97 } > 116 if ((mode & perm->mode) !=3D mode) { > 117 if (suser(td) !=3D 0) > 118 return (EACCES); > 119 } >=20 > why not directly return the error in line 94? If suser() returns 0 and you just did 'return(suser(td))' then you would no= t=20 perform the additional security check in lines 116-119 which could result i= n=20 allowing access to an IPC object when it should be restricted. =2D-=20 John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607271128.20025.jhb>