[media] ddbridge: fix ddb_ioctl()
authorDan Carpenter <error27@gmail.com>
Tue, 9 Aug 2011 15:52:38 +0000 (12:52 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 3 Sep 2011 21:23:42 +0000 (18:23 -0300)
commite9013fb6eb397df9fd2e71d4f31a8bad4e65d046
tree451e2abe1dcb3e8df761730450f65b743c3ddf61
parent0db4bf42baae95ddd457b0c4911e851c9169750e
[media] ddbridge: fix ddb_ioctl()

There were a several problems in this function:

1) Potential integer overflow in the comparison:
if (fio.write_len + fio.read_len > 1028) {

2) If the user gave bogus values for write_len and read_len then
   returning -EINVAL is more appropriate than returning -ENOMEM.

3) wbuf was set to the address of an array and could never be NULL
   so I removed the pointless NULL check.

4) The call to vfree(wbuf) was improper.  That array is part of a
   larger struct and isn't allocated by itself.

5) flashio() can't actually fail, but we may as well add error
   handling in case this changes later.

6) In the default case where an ioctl is not implemented then
   returning -ENOTTY is more appropriate than returning -EFAULT.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/ddbridge/ddbridge-core.c