Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Nov 1999 03:16:39 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Peter Wemm <peter@netplex.com.au>
Cc:        Brian Fundakowski Feldman <green@FreeBSD.ORG>, "Alexander N. Kabaev" <ak03@gte.com>, Jean-Marc Zucconi <jmz@FreeBSD.ORG>, marcel@FreeBSD.ORG, pho@FreeBSD.ORG, phk@FreeBSD.ORG, current@FreeBSD.ORG
Subject:   Re: Netscape and -current 
Message-ID:  <Pine.BSF.4.10.9911240308020.1224-100000@alphplex.bde.org>
In-Reply-To: <19991123033517.E7D731C6D@overcee.netplex.com.au>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 23 Nov 1999, Peter Wemm wrote:

> I'm pretty sure it's this commit to i386/machdep.c:
> ===
> revision 1.377
> date: 1999/11/21 14:46:43;  author: pho;  state: Exp;  lines: +5 -5
> Moved useracc() to top of sigreturn as to avoid panic
> caused by invalid arguments to rutine.
> 
> Reviewed by:    marcel, phk
> ===

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.

Indeed, the proplem is checking the new context before checking that the
context is actually new.

Here is my version.

int
sigreturn(p, uap)
	struct proc *p;
	struct sigreturn_args /* {
		ucontext_t *ucp;
	} */ *uap;
{
	struct trapframe *regs;
	ucontext_t *ucp;
	int cs, eflags;

#if defined(COMPAT_43) || defined(COMPAT_SUNOS)
	if (((struct osigcontext *)uap->sigcntxp)->sc_trapno == 0x01d516)
		return (osigreturn(p, (struct osigreturn_args *)uap));
#endif

	ucp = uap-> /* ucp */ sigcntxp;
	if (!useracc((caddr_t)ucp, sizeof(*ucp), VM_PROT_READ))
		return (EFAULT);
	eflags = ucp->uc_mcontext.mc_eflags;
	regs = p->p_md.md_regs;

Bruce



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.9911240308020.1224-100000>