summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2005-01-18 07:37:05 +0000
committerphk <phk@FreeBSD.org>2005-01-18 07:37:05 +0000
commit220b6a24144d509f576a8302fa32050982be9f40 (patch)
tree9f6c7055092ab089be5d375910230e02bc7679f0
parent9819b0d8b7729a5d35dd923317e0bae41172832e (diff)
downloadFreeBSD-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.
-rw-r--r--sys/kern/sys_generic.c6
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) {
OpenPOWER on IntegriCloud