* fhandler_raw.cc (fhandler_dev_raw::ioctl): Only allow 0, 1 or a

multiple of 512 as new buffersize.
This commit is contained in:
Corinna Vinschen 2005-12-08 10:55:29 +00:00
parent ddd62ccbd4
commit 7d6fde96de
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2005-12-08 Corinna Vinschen <corinna@vinschen.de>
* fhandler_raw.cc (fhandler_dev_raw::ioctl): Only allow 0, 1 or a
multiple of 512 as new buffersize.
2005-12-08 Pekka Pessi <ppessi@gmail.com>
Corinna Vinschen <corinna@vinschen.de>

View File

@ -157,8 +157,14 @@ fhandler_dev_raw::ioctl (unsigned int cmd, void *buf)
mop.mt_count = op->rd_parm;
ret = ioctl (MTIOCTOP, &mop);
}
else if (devbuf && ((op->rd_parm <= 1 && (devbufend - devbufstart))
else if ((devbuf && ((op->rd_parm <= 1 && (devbufend - devbufstart))
|| op->rd_parm < devbufend - devbufstart))
|| (op->rd_parm > 1 && (op->rd_parm % 512)))
/* The conditions for a *valid* parameter are these:
- If there's still data in the current buffer, it must
fit in the new buffer.
- The new size is either 0 or 1, both indicating unbufferd
I/O, or the new buffersize must be a multiple of 512. */
ret = ERROR_INVALID_PARAMETER;
else if (!devbuf || op->rd_parm != devbufsiz)
{