diff options
author | Johannes Berg <johannes.berg@intel.com> | 2016-09-14 09:59:21 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2016-09-15 16:46:17 +0200 |
commit | 53b18980fded52e39520661af3528577d36eb279 (patch) | |
tree | 817a838980a375f33e0179353aed39da0ca725b3 /net/wireless | |
parent | 76e1fb4b5532a9df9eb14cfe002412c7617c4ad0 (diff) | |
download | linux-53b18980fded52e39520661af3528577d36eb279.tar.gz linux-53b18980fded52e39520661af3528577d36eb279.tar.bz2 linux-53b18980fded52e39520661af3528577d36eb279.zip |
nl80211: always check nla_put* return values
A few instances were found where we didn't check them, add the
missing checks even though they'll probably never trigger as
the message should be large enough here.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/nl80211.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 60c8a7429d33..887c4c114206 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -9453,8 +9453,10 @@ static int nl80211_send_wowlan_nd(struct sk_buff *msg, if (!freqs) return -ENOBUFS; - for (i = 0; i < req->n_channels; i++) - nla_put_u32(msg, i, req->channels[i]->center_freq); + for (i = 0; i < req->n_channels; i++) { + if (nla_put_u32(msg, i, req->channels[i]->center_freq)) + return -ENOBUFS; + } nla_nest_end(msg, freqs); @@ -9468,9 +9470,10 @@ static int nl80211_send_wowlan_nd(struct sk_buff *msg, if (!match) return -ENOBUFS; - nla_put(msg, NL80211_SCHED_SCAN_MATCH_ATTR_SSID, - req->match_sets[i].ssid.ssid_len, - req->match_sets[i].ssid.ssid); + if (nla_put(msg, NL80211_SCHED_SCAN_MATCH_ATTR_SSID, + req->match_sets[i].ssid.ssid_len, + req->match_sets[i].ssid.ssid)) + return -ENOBUFS; nla_nest_end(msg, match); } nla_nest_end(msg, matches); |