wifi: cfg80211: stop parsing after allocation failure
authorBenjamin Berg <benjamin.berg@intel.com>
Sun, 18 Jun 2023 18:50:00 +0000 (21:50 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 19 Jun 2023 11:12:43 +0000 (13:12 +0200)
The error handling code would break out of the loop incorrectly,
causing the rest of the message to be misinterpreted. Fix this by
also jumping out of the surrounding while loop, which will trigger
the error detection code.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230618214436.0ffac98475cf.I6f5c08a09f5c9fced01497b95a9841ffd1b039f8@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/scan.c

index df868662e1e056bc1eb8c2f76ef79888f845803f..91671698aaec0999d4f297a312957c3d2833e743 100644 (file)
@@ -707,7 +707,7 @@ static int cfg80211_parse_colocated_ap(const struct cfg80211_bss_ies *ies,
                                        GFP_ATOMIC);
 
                        if (!entry)
-                               break;
+                               goto error;
 
                        entry->center_freq = freq;
 
@@ -723,6 +723,7 @@ static int cfg80211_parse_colocated_ap(const struct cfg80211_bss_ies *ies,
                }
        }
 
+error:
        if (pos != end) {
                cfg80211_free_coloc_ap_list(&ap_list);
                return 0;