Check if member io_count is non-negative. If it is negative the call to device_read_alloc() will fail. Return KERN_INVALID_ARGUMENT in that case.
* device/chario.c (char_read): Check if member io_count is non-negative. --- device/chario.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/device/chario.c b/device/chario.c index c9f946c..f912924 100644 --- a/device/chario.c +++ b/device/chario.c @@ -394,7 +394,11 @@ io_return_t char_read( /* * Allocate memory for read buffer. */ - rc = device_read_alloc(ior, (vm_size_t)ior->io_count); + if (ior->io_count >= 0) + rc = device_read_alloc(ior, (vm_size_t)ior->io_count); + else + return KERN_INVALID_ARGUMENT; + if (rc != KERN_SUCCESS) return rc; -- 1.8.1.4