syzbot, using KMSAN, has reported an uninit-value access in
hwsim_cloned_frame_received_nl(). This is happening because frame_data_len
is 0. The code doesn't detect this case and blindly tries to read the
frame's header.
Fix this by bailing out in case frame_data_len is 0.
Reported-by: syzbot+b2645b5bf1512b81fa22@syzkaller.appspotmail.com
Tested-by: syzbot+b2645b5bf1512b81fa22@syzkaller.appspotmail.com
Signed-off-by: Anirudh Rayabharam <redacted>
---
drivers/net/wireless/mac80211_hwsim.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -3649,7 +3649,7 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2,if(skb==NULL)gotoerr;-if(frame_data_len>IEEE80211_MAX_DATA_LEN)+if(frame_data_len==0||frame_data_len>IEEE80211_MAX_DATA_LEN)gotoerr;/* Copy the data */
From: Johannes Berg <johannes@sipsolutions.net> Date: 2021-06-18 09:36:36
On Thu, 2021-06-10 at 21:49 +0530, Anirudh Rayabharam wrote:
syzbot, using KMSAN, has reported an uninit-value access in
hwsim_cloned_frame_received_nl(). This is happening because frame_data_len
is 0. The code doesn't detect this case and blindly tries to read the
frame's header.
Fix this by bailing out in case frame_data_len is 0.
This really seems quite pointless - you should bail out if the frame is
too short for what we need to do, not just when it's 0.
johannes
On Fri, Jun 18, 2021 at 11:36:16AM +0200, Johannes Berg wrote:
On Thu, 2021-06-10 at 21:49 +0530, Anirudh Rayabharam wrote:
quoted
syzbot, using KMSAN, has reported an uninit-value access in
hwsim_cloned_frame_received_nl(). This is happening because frame_data_len
is 0. The code doesn't detect this case and blindly tries to read the
frame's header.
Fix this by bailing out in case frame_data_len is 0.
This really seems quite pointless - you should bail out if the frame is
too short for what we need to do, not just when it's 0.
That makes sense. Do you happen to know what the min length of a valid
frame is? There doesn't seem to be constant defined for that already.
- Anirudh