diff options
author | Poul-Henning Kamp <phk@FreeBSD.org> | 2005-01-18 07:37:05 +0000 |
---|---|---|
committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2005-01-18 07:37:05 +0000 |
commit | 9fc6aa0618a174f436fb1a26867c99cff4125b40 (patch) | |
tree | 9f6c7055092ab089be5d375910230e02bc7679f0 /sys/kern/sys_generic.c | |
parent | bb5d43ae2abfac6011dd236f672d4f617e46f9cd (diff) | |
download | src-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
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 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) { |