From 43d0f55b38fa7b1bc68bad366d8e0f1897b8b323 Mon Sep 17 00:00:00 2001 From: Bryan Varner Date: Thu, 23 Feb 2006 00:10:16 +0000 Subject: [PATCH] Better checking on *buf bounds, should eliminate possible problems (which aren't at all likely). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16499 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../drivers/power/acpi_ns_dump/acpi_ns_dump.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/drivers/power/acpi_ns_dump/acpi_ns_dump.c b/src/add-ons/kernel/drivers/power/acpi_ns_dump/acpi_ns_dump.c index 4021e6e35b..f533f3185d 100644 --- a/src/add-ons/kernel/drivers/power/acpi_ns_dump/acpi_ns_dump.c +++ b/src/add-ons/kernel/drivers/power/acpi_ns_dump/acpi_ns_dump.c @@ -148,12 +148,17 @@ my_device_read (void* cookie, off_t position, void *buf, size_t* num_bytes) { size_t bytes = 0; - if (position > 0) { - *num_bytes = 0; - } else { + if (position == 0) { // First read dump_acpi_namespace("\\", buf, &bytes, 0); - *num_bytes = bytes; - dprintf("num_bytes %lu\n", *num_bytes); + if (bytes <= *num_bytes) { + *num_bytes = bytes; + dprintf("acpi_ns_dump: read %lu bytes\n", *num_bytes); + } else { + *num_bytes = 0; + return B_IO_ERROR; + } + } else { + *num_bytes = 0; } return B_OK;