Bluetooth: Check result code of L2CAP information response
authorVille Tervo <ville.tervo@nokia.com>
Wed, 4 Aug 2010 06:43:33 +0000 (09:43 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 4 Aug 2010 14:25:17 +0000 (07:25 -0700)
Check result code of L2CAP information response. Otherwise
it would read invalid feature mask and access invalid memory.

Signed-off-by: Ville Tervo <ville.tervo@nokia.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/l2cap.c

index 0f34e12751470f11d11e4400278fed4759c4999b..3e3cd9d4e52ce6147ed5b506a8d4cb3f6248d85e 100644 (file)
@@ -3348,6 +3348,15 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm
 
        del_timer(&conn->info_timer);
 
+       if (result != L2CAP_IR_SUCCESS) {
+               conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
+               conn->info_ident = 0;
+
+               l2cap_conn_start(conn);
+
+               return 0;
+       }
+
        if (type == L2CAP_IT_FEAT_MASK) {
                conn->feat_mask = get_unaligned_le32(rsp->data);