[Bug 206755] Use of initialised stack variables in tdfx_query_update
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sat Jan 30 09:53:38 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206755
Bug ID: 206755
Summary: Use of initialised stack variables in
tdfx_query_update
Product: Base System
Version: 11.0-CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: freebsd-bugs at FreeBSD.org
Reporter: cturt at hardenedbsd.org
`tdfx_query_update` in `sys/dev/tdfx/tdfx_pci.c` doesn't check the result of
`copyin` calls:
static int
tdfx_query_update(u_int cmd, struct tdfx_pio_data *piod)
{
/* XXX Comment this later, after careful inspection and spring cleaning
:) */
/* Return vals */
u_int8_t ret_byte;
u_int16_t ret_word;
u_int32_t ret_dword;
...
switch (piod->size) {
case 1:
copyin(piod->value, &ret_byte, 1);
preval = ret_byte << (8 * (piod->port & 0x3));
mask = 0xff << (8 * (piod->port & 0x3));
break;
case 2:
copyin(piod->value, &ret_word, 2);
preval = ret_word << (8 * (piod->port & 0x3));
mask = 0xffff << (8 * (piod->port & 0x3));
break;
case 4:
copyin(piod->value, &ret_dword, 4);
preval = ret_dword;
mask = ~0;
break;
default:
return -EINVAL;
}
/* Finally, combine the values and write it to the port */
retval = (retval & ~mask) | preval;
pci_write_config(tdfx_info->dev, piod->port & ~3, retval, 4);
If the user supplies a bad pointer, so that the `copyin` calls fail,
`pci_write_config` will be passed an uninitialised stack value.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list