Subject: Re: systrace broken in -current?
To: None <current-users@netbsd.org>
From: Christos Zoulas <christos@zoulas.com>
List: current-users
Date: 05/25/2004 22:39:10
In article <20040525174118.GA16052@citi.citi.umich.edu>,
Niels Provos <provos@citi.umich.edu> wrote:
>On Sun, May 23, 2004 at 11:18:25AM -0400, Jeff Ito wrote:
>> I don't know if this suggests an underlying error in systrace that
>> this exposed, or in the sys_process.c diff, but hopefully this will 
>> give someone a place to start looking. 
>
>The following diff
>
>Index: kern_systrace.c
>===================================================================
>RCS file: /cvsroot/src/sys/kern/kern_systrace.c,v
>retrieving revision 1.39
>diff -u -r1.39 kern_systrace.c
>--- kern_systrace.c	25 Apr 2004 16:42:41 -0000	1.39
>+++ kern_systrace.c	25 May 2004 16:06:59 -0000
>@@ -1191,7 +1191,7 @@
> 	iov.iov_len = io->strio_len;
> 	uio.uio_iov = &iov;
> 	uio.uio_iovcnt = 1;
>-	uio.uio_offset = (off_t)(long)io->strio_offs;
>+	uio.uio_offset = (off_t)(unsigned long)io->strio_offs;
> 	uio.uio_resid = io->strio_len;
> 	uio.uio_segflg = UIO_USERSPACE;
> 	uio.uio_procp = p;
>
>solves the problem, but I have to admin that I do not understand
>the original reason for the casting.  But basically, the long is
>signed and then converting to (off_t) extended the signedness.

I don't know the reason for the original cast; it seems wrong to me.

christos