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