]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouse.c
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbMouseDxe / UsbMouse.c
index 0ad5616d966113ad42b7cac7a7fda17a31789f95..677815a8ade3de3a298b8326679d1e65e8d0218a 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   USB Mouse Driver that manages USB mouse and produces Simple Pointer Protocol.\r
 \r
-Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -335,7 +329,7 @@ USBMouseDriverBindingStart (
            );\r
     goto ErrorExit;\r
   }\r
-  \r
+\r
   UsbMouseDevice->ControllerNameTable = NULL;\r
   AddUnicodeString2 (\r
     "eng",\r
@@ -596,7 +590,7 @@ InitializeUsbMouseDevice (
 \r
   Total = 0;\r
   Start = FALSE;\r
-  Head  = (USB_DESC_HEAD *)Buf;  \r
+  Head  = (USB_DESC_HEAD *)Buf;\r
   MouseHidDesc = NULL;\r
 \r
   //\r
@@ -782,7 +776,7 @@ OnMouseInterruptComplete (
 \r
     //\r
     // Delete & Submit this interrupt again\r
-    // Handler of DelayedRecoveryEvent triggered by timer will re-submit the interrupt. \r
+    // Handler of DelayedRecoveryEvent triggered by timer will re-submit the interrupt.\r
     //\r
     UsbIo->UsbAsyncInterruptTransfer (\r
              UsbIo,\r
@@ -811,8 +805,6 @@ OnMouseInterruptComplete (
     return EFI_SUCCESS;\r
   }\r
 \r
-  UsbMouseDevice->StateChanged = TRUE;\r
-\r
   //\r
   // Check mouse Data\r
   // USB HID Specification specifies following data format:\r
@@ -825,6 +817,12 @@ OnMouseInterruptComplete (
   // 2       0 to 7  Y displacement\r
   // 3 to n  0 to 7  Device specific (optional)\r
   //\r
+  if (DataLength < 3) {\r
+    return EFI_DEVICE_ERROR;\r
+  }\r
+\r
+  UsbMouseDevice->StateChanged = TRUE;\r
+\r
   UsbMouseDevice->State.LeftButton  = (BOOLEAN) ((*(UINT8 *) Data & BIT0) != 0);\r
   UsbMouseDevice->State.RightButton = (BOOLEAN) ((*(UINT8 *) Data & BIT1) != 0);\r
   UsbMouseDevice->State.RelativeMovementX += *((INT8 *) Data + 1);\r
@@ -839,16 +837,16 @@ OnMouseInterruptComplete (
 \r
 /**\r
   Retrieves the current state of a pointer device.\r
-    \r
-  @param  This                  A pointer to the EFI_SIMPLE_POINTER_PROTOCOL instance.                                   \r
+\r
+  @param  This                  A pointer to the EFI_SIMPLE_POINTER_PROTOCOL instance.\r
   @param  MouseState            A pointer to the state information on the pointer device.\r
-                                \r
+\r
   @retval EFI_SUCCESS           The state of the pointer device was returned in State.\r
   @retval EFI_NOT_READY         The state of the pointer device has not changed since the last call to\r
-                                GetState().                                                           \r
+                                GetState().\r
   @retval EFI_DEVICE_ERROR      A device error occurred while attempting to retrieve the pointer device's\r
-                                current state.                                                           \r
-  @retval EFI_INVALID_PARAMETER MouseState is NULL.                                                           \r
+                                current state.\r
+  @retval EFI_INVALID_PARAMETER MouseState is NULL.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -892,13 +890,13 @@ GetMouseState (
 }\r
 \r
 \r
-/**                                                                 \r
+/**\r
   Resets the pointer device hardware.\r
-  \r
+\r
   @param  This                  A pointer to the EFI_SIMPLE_POINTER_PROTOCOL instance.\r
   @param  ExtendedVerification  Indicates that the driver may perform a more exhaustive\r
                                 verification operation of the device during reset.\r
-                                \r
+\r
   @retval EFI_SUCCESS           The device was reset.\r
   @retval EFI_DEVICE_ERROR      The device is not functioning correctly and could not be reset.\r
 \r
@@ -937,7 +935,7 @@ UsbMouseReset (
 \r
   @param  Event        Event to be signaled when there's input from mouse.\r
   @param  Context      Points to USB_MOUSE_DEV instance.\r
\r
+\r
 **/\r
 VOID\r
 EFIAPI\r