Skip to content

Commit 1b9c17f

Browse files
Jianpeng ChangVudentz
authored andcommitted
Bluetooth: MGMT: Fix memory leak in set_ssp_complete
Fix memory leak in set_ssp_complete() where mgmt_pending_cmd structures are not freed after being removed from the pending list. Commit 302a1f6 ("Bluetooth: MGMT: Fix possible UAFs") replaced mgmt_pending_foreach() calls with individual command handling but missed adding mgmt_pending_free() calls in both error and success paths of set_ssp_complete(). Other completion functions like set_le_complete() were fixed correctly in the same commit. This causes a memory leak of the mgmt_pending_cmd structure and its associated parameter data for each SSP command that completes. Add the missing mgmt_pending_free(cmd) calls in both code paths to fix the memory leak. Also fix the same issue in set_advertising_complete(). Fixes: 302a1f6 ("Bluetooth: MGMT: Fix possible UAFs") Signed-off-by: Jianpeng Chang <jianpeng.chang.cn@windriver.com> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
1 parent 0c3cd7a commit 1b9c17f

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

net/bluetooth/mgmt.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1966,6 +1966,7 @@ static void set_ssp_complete(struct hci_dev *hdev, void *data, int err)
19661966
}
19671967

19681968
mgmt_cmd_status(cmd->sk, cmd->hdev->id, cmd->opcode, mgmt_err);
1969+
mgmt_pending_free(cmd);
19691970
return;
19701971
}
19711972

@@ -1984,6 +1985,7 @@ static void set_ssp_complete(struct hci_dev *hdev, void *data, int err)
19841985
sock_put(match.sk);
19851986

19861987
hci_update_eir_sync(hdev);
1988+
mgmt_pending_free(cmd);
19871989
}
19881990

19891991
static int set_ssp_sync(struct hci_dev *hdev, void *data)
@@ -6438,6 +6440,7 @@ static void set_advertising_complete(struct hci_dev *hdev, void *data, int err)
64386440
hci_dev_clear_flag(hdev, HCI_ADVERTISING);
64396441

64406442
settings_rsp(cmd, &match);
6443+
mgmt_pending_free(cmd);
64416444

64426445
new_settings(hdev, match.sk);
64436446

0 commit comments

Comments
 (0)