diff options
author | Thomas Haller <thaller@redhat.com> | 2022-02-15 10:23:19 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2022-02-21 16:03:18 +0100 |
commit | 4f9f0587d58261526c9650a2df4d31a1350426c0 (patch) | |
tree | 14d6be59854609079957e9d672fc7b8824e70af3 | |
parent | 01ed529ae3ec056ec5861fbff87e30cea26bd81c (diff) | |
download | NetworkManager-4f9f0587d58261526c9650a2df4d31a1350426c0.tar.gz |
wifi: fix find_freq() implementation
As we iterate over "self->num_freqs", we must not modify "freqs",
otherwise, the second and subsequenty frequencies in self->freqs[i]
cannot match.
Fixes: dd8c546ff052 ('2007-12-27 Dan Williams <dcbw@redhat.com>')
Fixes: ba8527ca58bd ('wifi: preliminary nl80211 patch')
-rw-r--r-- | src/libnm-platform/wifi/nm-wifi-utils-nl80211.c | 8 | ||||
-rw-r--r-- | src/libnm-platform/wifi/nm-wifi-utils-wext.c | 10 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c b/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c index 2fa46e3884..3906384b13 100644 --- a/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c +++ b/src/libnm-platform/wifi/nm-wifi-utils-nl80211.c @@ -382,12 +382,12 @@ wifi_nl80211_find_freq(NMWifiUtils *data, const guint32 *freqs) { NMWifiUtilsNl80211 *self = (NMWifiUtilsNl80211 *) data; int i; + int j; for (i = 0; i < self->num_freqs; i++) { - while (*freqs) { - if (self->freqs[i] == *freqs) - return *freqs; - freqs++; + for (j = 0; freqs[j] != 0; j++) { + if (self->freqs[i] == freqs[j]) + return freqs[j]; } } return 0; diff --git a/src/libnm-platform/wifi/nm-wifi-utils-wext.c b/src/libnm-platform/wifi/nm-wifi-utils-wext.c index 2d4112bc05..8d0e6ed04a 100644 --- a/src/libnm-platform/wifi/nm-wifi-utils-wext.c +++ b/src/libnm-platform/wifi/nm-wifi-utils-wext.c @@ -252,13 +252,13 @@ static guint32 wifi_wext_find_freq(NMWifiUtils *data, const guint32 *freqs) { NMWifiUtilsWext *wext = (NMWifiUtilsWext *) data; - int i; + guint i; + guint j; for (i = 0; i < wext->num_freqs; i++) { - while (*freqs) { - if (wext->freqs[i] == *freqs) - return *freqs; - freqs++; + for (j = 0; freqs[j] != 0; j++) { + if (wext->freqs[i] == freqs[j]) + return freqs[j]; } } return 0; |