Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Nov 1999 14:13:12 +0800
From:      Peter Wemm <peter@netplex.com.au>
To:        Brian Fundakowski Feldman <green@FreeBSD.org>
Cc:        Christopher Masto <chris@netmonger.net>, "Daniel O'Connor" <doconnor@gsoft.com.au>, Steve Kargl <sgk@troutmask.apl.washington.edu>, current@FreeBSD.org, Jean-Marc Zucconi <jmz@FreeBSD.org>, "Alexander N. Kabaev" <ak03@gte.com>
Subject:   Re: Netscape and -current 
Message-ID:  <19991123061312.248461C6D@overcee.netplex.com.au>
In-Reply-To: Message from Brian Fundakowski Feldman <green@FreeBSD.org>  of "Tue, 23 Nov 1999 00:30:44 EST." <Pine.BSF.4.10.9911230027330.22643-100000@org.dyndns.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
Brian Fundakowski Feldman wrote:
> Forget anything I said about KAME being the strong possibility :)  As
> soon as peter noted what commit it could have to do with, I figured
> it out and fixed it; after testing, I committed it.  Be happy :)

Your fix suffers from exactly the same problem..  Suppose down the track
that ucontext_t becomes smaller than 'struct sigocontext' ?  You're then
failing what would have worked.  The check against sizeof osigcontext should
not be fatal.

Index: machdep.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/machdep.c,v
retrieving revision 1.378
diff -u -r1.378 machdep.c
--- machdep.c	1999/11/23 04:09:13	1.378
+++ machdep.c	1999/11/23 05:49:46
@@ -871,14 +871,16 @@
 {
 	struct trapframe *regs;
 	ucontext_t *ucp;
+	struct osigcontext *scp;
 	int cs, eflags;
 
 	ucp = uap->sigcntxp;
+	scp = (struct osigcontext *)ucp;
 
-	if (!useracc((caddr_t)ucp, sizeof(struct osigcontext), VM_PROT_READ))
-		return (EFAULT);
-	if (((struct osigcontext *)ucp)->sc_trapno == 0x01d516)
-		return (osigreturn(p, (struct osigreturn_args *)uap));
+	if (useracc((caddr_t)scp, sizeof (struct osigcontext), VM_PROT_READ)) {
+		if (scp->sc_trapno == 0x01d516)
+			return osigreturn(p, (struct osigreturn_args *)uap);
+	}
 
 	/*
 	 * Since ucp is not an osigcontext but a ucontext_t, we have to


Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au



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?19991123061312.248461C6D>