summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/wcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386/isa/wcd.c')
-rw-r--r--sys/i386/isa/wcd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/i386/isa/wcd.c b/sys/i386/isa/wcd.c
index 3821b1c..94c76a5 100644
--- a/sys/i386/isa/wcd.c
+++ b/sys/i386/isa/wcd.c
@@ -767,11 +767,10 @@ int wcdioctl (dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p)
if ( te->data_len < sizeof(toc->tab[0])
|| (te->data_len % sizeof(toc->tab[0])) != 0
+ || te->address_format != CD_MSF_FORMAT
+ && te->address_format != CD_LBA_FORMAT
)
return EINVAL;
- if (te->address_format != CD_MSF_FORMAT &&
- te->address_format != CD_LBA_FORMAT)
- return EINVAL;
if (starting_track == 0)
starting_track = toc->hdr.starting_track;
@@ -785,6 +784,8 @@ int wcdioctl (dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p)
sizeof(toc->tab[0]);
if (te->data_len < len)
len = te->data_len;
+ if (len > sizeof(toc->tab))
+ return EINVAL;
/* Convert to MSF format, if needed. */
if (te->address_format == CD_MSF_FORMAT) {
OpenPOWER on IntegriCloud