hpt27xx: plug info leak in hpt_ioctl
The hpt27xx ioctl handler allocates a buffer without M_ZERO and calls hpt_do_ioctl(), which might not overwrite the entire buffer. Also zero bytesReturned in case it is not written by hpt_do_ioctl(). The hpt27xx device has permissions only for root so this is not urgent, and the fix can be MFCd and considered for a future EN. Reported by: Ilja van Sprundel <ivansprundel@ioactive.com> Submitted by: Domagoj Stolfa <domagoj.stolfa@gmail.com> (M_ZERO) Reviewed by: jhb, kib MFC after: 3 days Security: info leak in root-only ioctl Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
6266e5e4ec
commit
503a0e4ebc
@ -1404,7 +1404,7 @@ static int hpt_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, stru
|
||||
{
|
||||
PHPT_IOCTL_PARAM piop=(PHPT_IOCTL_PARAM)data;
|
||||
IOCTL_ARG ioctl_args;
|
||||
HPT_U32 bytesReturned;
|
||||
HPT_U32 bytesReturned = 0;
|
||||
|
||||
switch (cmd){
|
||||
case HPT_DO_IOCONTROL:
|
||||
@ -1434,7 +1434,7 @@ static int hpt_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, stru
|
||||
}
|
||||
|
||||
if (ioctl_args.nOutBufferSize) {
|
||||
ioctl_args.lpOutBuffer = malloc(ioctl_args.nOutBufferSize, M_DEVBUF, M_WAITOK);
|
||||
ioctl_args.lpOutBuffer = malloc(ioctl_args.nOutBufferSize, M_DEVBUF, M_WAITOK | M_ZERO);
|
||||
if (!ioctl_args.lpOutBuffer)
|
||||
goto invalid;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user