]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wil6210: missing length check in wmi_set_ie
authorLior David <qca_liord@qca.qualcomm.com>
Tue, 14 Nov 2017 13:25:39 +0000 (15:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Dec 2018 13:08:49 +0000 (14:08 +0100)
commit b5a8ffcae4103a9d823ea3aa3a761f65779fbe2a upstream.

Add a length check in wmi_set_ie to detect unsigned integer
overflow.

Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/ath/wil6210/wmi.c

index 4311df982c6074cf54e2fe43a8971f4aa355725e..eaf720679ba31d2980172832d99d6cad0b4d629e 100644 (file)
@@ -969,7 +969,12 @@ int wmi_set_ie(struct wil6210_priv *wil, u8 type, u16 ie_len, const void *ie)
 {
        int rc;
        u16 len = sizeof(struct wmi_set_appie_cmd) + ie_len;
-       struct wmi_set_appie_cmd *cmd = kzalloc(len, GFP_KERNEL);
+       struct wmi_set_appie_cmd *cmd;
+
+       if (len < ie_len)
+               return -EINVAL;
+
+       cmd = kzalloc(len, GFP_KERNEL);
 
        if (!cmd)
                return -ENOMEM;