From 05766ad5779bf891bb1f80e361a4c807c560d7ea Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 15 Feb 2022 10:23:19 +0100 Subject: [PATCH] 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 ') Fixes: ba8527ca58bd ('wifi: preliminary nl80211 patch') (cherry picked from commit 4f9f0587d58261526c9650a2df4d31a1350426c0) --- src/libnm-platform/wifi/nm-wifi-utils-nl80211.c | 8 ++++---- 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;