OSDN Git Service

DO NOT MERGE Fix OOB read before buffer length check
authorUgo Yu <ugoyu@google.com>
Wed, 8 Aug 2018 06:46:42 +0000 (14:46 +0800)
committerUgo Yu <ugoyu@google.com>
Wed, 8 Aug 2018 06:51:19 +0000 (14:51 +0800)
Bug: 111936834
Test: manual
Change-Id: Ib98528fb62db0d724ebd9112d071e367f78e369d

stack/smp/smp_act.cc

index 51b8972..09007a1 100644 (file)
@@ -733,13 +733,17 @@ void smp_process_keypress_notification(tSMP_CB* p_cb, tSMP_INT_DATA* p_data) {
   uint8_t reason = SMP_INVALID_PARAMETERS;
 
   SMP_TRACE_DEBUG("%s", __func__);
-  p_cb->status = *(uint8_t*)p_data;
 
   if (smp_command_has_invalid_parameters(p_cb)) {
+    if (p_cb->rcvd_cmd_len < 2) {  // 1 (opcode) + 1 (Notif Type) bytes
+      android_errorWriteLog(0x534e4554, "111936834");
+    }
     smp_sm_event(p_cb, SMP_AUTH_CMPL_EVT, &reason);
     return;
   }
 
+  p_cb->status = *(uint8_t*)p_data;
+
   if (p != NULL) {
     STREAM_TO_UINT8(p_cb->peer_keypress_notification, p);
   } else {