diff options
author | phk <phk@FreeBSD.org> | 2005-01-18 07:37:05 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2005-01-18 07:37:05 +0000 |
commit | 220b6a24144d509f576a8302fa32050982be9f40 (patch) | |
tree | 9f6c7055092ab089be5d375910230e02bc7679f0 /sys/kern/sys_generic.c | |
parent | 9819b0d8b7729a5d35dd923317e0bae41172832e (diff) | |
download | FreeBSD-src-220b6a24144d509f576a8302fa32050982be9f40.zip FreeBSD-src-220b6a24144d509f576a8302fa32050982be9f40.tar.gz |
Detect sign-extension bugs in the ioctl(2) command argument: Truncate
to 32 bits and print warning.
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r-- | sys/kern/sys_generic.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index b846186..0aa178a 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -472,6 +472,12 @@ ioctl(struct thread *td, struct ioctl_args *uap) caddr_t data, memp; int tmp; + if (uap->com > 0xffffffff) { + printf( + "WARNING pid %d (%s): ioctl sign-extension ioctl %lx\n", + td->td_proc->p_pid, td->td_proc->p_comm, uap->com); + uap->com &= 0xffffffff; + } if ((error = fget(td, uap->fd, &fp)) != 0) return (error); if ((fp->f_flag & (FREAD | FWRITE)) == 0) { |