Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d972768 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role)
Browse files

[automerger] GATT: Handle too short Error Response PDU am: b91518ff am: b46baa63 am: a6052fb3

Change-Id: I43e8c151fffa381413347fa2429b4a996f432199
parents a4d566b1 a6052fb3
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include "gki.h"
#include "gatt_int.h"
#include "l2c_int.h"
#include "log/log.h"

#define GATT_WRITE_LONG_HDR_SIZE    5 /* 1 opcode + 2 handle + 2 offset */
#define GATT_READ_CHAR_VALUE_HDL    (GATT_READ_CHAR_VALUE | 0x80)
@@ -566,9 +567,24 @@ void gatt_process_error_rsp(tGATT_TCB *p_tcb, tGATT_CLCB *p_clcb, UINT8 op_code,
    UNUSED(len);

    GATT_TRACE_DEBUG("gatt_process_error_rsp ");

    if (len < 4) {
        android_errorWriteLog(0x534e4554, "79591688");
        GATT_TRACE_ERROR("Error response too short");
        // Specification does not clearly define what should happen if error
        // response is too short. General rule in BT Spec 5.0 Vol 3, Part F 3.4.1.1
        // is: "If an error code is received in the Error Response that is not
        // understood by the client, for example an error code that was reserved for
        // future use that is now being used in a future version of this
        // specification, then the Error Response shall still be considered to state
        // that the given request cannot be performed for an unknown reason."
        opcode = handle = 0;
        reason = 0x7F;
    } else {
        STREAM_TO_UINT8(opcode, p);
        STREAM_TO_UINT16(handle, p);
        STREAM_TO_UINT8(reason, p);
    }

    if (p_clcb->operation == GATTC_OPTYPE_DISCOVERY)
    {