From 29dcf8568b6cc112536955acfd7b4bc971baa742 Mon Sep 17 00:00:00 2001 From: Murai Takashi Date: Thu, 14 Feb 2019 06:33:22 +0900 Subject: [PATCH] drivers/bus/usb: Fix potential memory leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix potential leak of 'controlData' at line 701, which is allocated at line 695. Pointed out by Clang Static Analyzer. * Add NULL check to 'controlData'. Change-Id: I96b0244d05d303b4c08ac8969f5ce5fc2e5012f9 Reviewed-on: https://review.haiku-os.org/c/1059 Reviewed-by: Jérôme Duval --- src/add-ons/kernel/drivers/bus/usb/usb_raw.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/add-ons/kernel/drivers/bus/usb/usb_raw.cpp b/src/add-ons/kernel/drivers/bus/usb/usb_raw.cpp index 56a15573c2..c10c7c8207 100644 --- a/src/add-ons/kernel/drivers/bus/usb/usb_raw.cpp +++ b/src/add-ons/kernel/drivers/bus/usb/usb_raw.cpp @@ -693,11 +693,14 @@ usb_raw_ioctl(void *cookie, uint32 op, void *buffer, size_t length) return B_BUFFER_OVERFLOW; void *controlData = malloc(command.control.length); + if (controlData == NULL) + return B_NO_MEMORY; bool inTransfer = (command.control.request_type & USB_ENDPOINT_ADDR_DIR_IN) != 0; if (!IS_USER_ADDRESS(command.control.data) || (!inTransfer && user_memcpy(controlData, command.control.data, command.control.length) != B_OK)) { + free(controlData); return B_BAD_ADDRESS; }