summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-02-15 10:23:19 +0100
committerThomas Haller <thaller@redhat.com>2022-02-21 16:03:18 +0100
commit4f9f0587d58261526c9650a2df4d31a1350426c0 (patch)
tree14d6be59854609079957e9d672fc7b8824e70af3
parent01ed529ae3ec056ec5861fbff87e30cea26bd81c (diff)
downloadNetworkManager-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.c8
-rw-r--r--src/libnm-platform/wifi/nm-wifi-utils-wext.c10
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;