On Tue, 23 Nov 1999, Brian Fundakowski Feldman wrote:

> On Wed, 24 Nov 1999, Bruce Evans wrote:
> 
> > Hmm.  My netscape works, but I didn't use merge that commit.  I had already
> > inadvertly fixed the bug in another way while cleaning up.
> > ...
> > #if defined(COMPAT_43) || defined(COMPAT_SUNOS)
> >     if (((struct osigcontext *)uap->sigcntxp)->sc_trapno == 0x01d516)
> >             return (osigreturn(p, (struct osigreturn_args *)uap));
> > #endif
> 
> I don't see how this fixes things, other than hiding it.  Since the i386

I was in a hurry and didn't notice that my inadvertent fix wasn't complete :-).

> memory model we use maps kernel and user memory all at the same time,
> this code is reading directly from user space memory, right?  If this is

It could be reading from anywhere with an invalid sigcntxp.  Reading from
certain locations may cause a panic.

> the case, wouldn't a copyin() be the proper thing to do?  At least doing
> the useracc() would be better than doing nothing, wouldn't it?

I plan to use copying and delete the useracc()'s.  This will be much faster
Checking the magic number is inconvenient, since a copyin() with size
(max of the 2 context sizes) may fail and a copyin() with size 
(min of the 2 context sizes) would leave us with an extra copyin() to do
in the usual (new sigreturn()) case.  I'll try using fuword() to read the
magic byte.

Bruce



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to