aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2005-01-18 07:37:05 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2005-01-18 07:37:05 +0000
commit9fc6aa0618a174f436fb1a26867c99cff4125b40 (patch)
tree9f6c7055092ab089be5d375910230e02bc7679f0
parentbb5d43ae2abfac6011dd236f672d4f617e46f9cd (diff)
downloadsrc-9fc6aa0618a174f436fb1a26867c99cff4125b40.tar.gz
src-9fc6aa0618a174f436fb1a26867c99cff4125b40.zip
Detect sign-extension bugs in the ioctl(2) command argument: Truncate
to 32 bits and print warning.
Notes
Notes: svn path=/head/; revision=140406
-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 b84618684e9c..0aa178a5803f 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) {