@@ -947,7 +947,7 @@ static void ieee80211_parse_extension_element(u32 *crc,
947
947
948
948
switch (elem -> data [0 ]) {
949
949
case WLAN_EID_EXT_HE_MU_EDCA :
950
- if (len = = sizeof (* elems -> mu_edca_param_set )) {
950
+ if (len > = sizeof (* elems -> mu_edca_param_set )) {
951
951
elems -> mu_edca_param_set = data ;
952
952
if (crc )
953
953
* crc = crc32_be (* crc , (void * )elem ,
@@ -968,15 +968,15 @@ static void ieee80211_parse_extension_element(u32 *crc,
968
968
}
969
969
break ;
970
970
case WLAN_EID_EXT_UORA :
971
- if (len = = 1 )
971
+ if (len > = 1 )
972
972
elems -> uora_element = data ;
973
973
break ;
974
974
case WLAN_EID_EXT_MAX_CHANNEL_SWITCH_TIME :
975
975
if (len == 3 )
976
976
elems -> max_channel_switch_time = data ;
977
977
break ;
978
978
case WLAN_EID_EXT_MULTIPLE_BSSID_CONFIGURATION :
979
- if (len = = sizeof (* elems -> mbssid_config_ie ))
979
+ if (len > = sizeof (* elems -> mbssid_config_ie ))
980
980
elems -> mbssid_config_ie = data ;
981
981
break ;
982
982
case WLAN_EID_EXT_HE_SPR :
@@ -985,7 +985,7 @@ static void ieee80211_parse_extension_element(u32 *crc,
985
985
elems -> he_spr = data ;
986
986
break ;
987
987
case WLAN_EID_EXT_HE_6GHZ_CAPA :
988
- if (len = = sizeof (* elems -> he_6ghz_capa ))
988
+ if (len > = sizeof (* elems -> he_6ghz_capa ))
989
989
elems -> he_6ghz_capa = data ;
990
990
break ;
991
991
}
@@ -1074,14 +1074,14 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
1074
1074
1075
1075
switch (id ) {
1076
1076
case WLAN_EID_LINK_ID :
1077
- if (elen + 2 != sizeof (struct ieee80211_tdls_lnkie )) {
1077
+ if (elen + 2 < sizeof (struct ieee80211_tdls_lnkie )) {
1078
1078
elem_parse_failed = true;
1079
1079
break ;
1080
1080
}
1081
1081
elems -> lnk_id = (void * )(pos - 2 );
1082
1082
break ;
1083
1083
case WLAN_EID_CHAN_SWITCH_TIMING :
1084
- if (elen != sizeof (struct ieee80211_ch_switch_timing )) {
1084
+ if (elen < sizeof (struct ieee80211_ch_switch_timing )) {
1085
1085
elem_parse_failed = true;
1086
1086
break ;
1087
1087
}
@@ -1244,7 +1244,7 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
1244
1244
elems -> sec_chan_offs = (void * )pos ;
1245
1245
break ;
1246
1246
case WLAN_EID_CHAN_SWITCH_PARAM :
1247
- if (elen !=
1247
+ if (elen <
1248
1248
sizeof (* elems -> mesh_chansw_params_ie )) {
1249
1249
elem_parse_failed = true;
1250
1250
break ;
@@ -1253,7 +1253,7 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
1253
1253
break ;
1254
1254
case WLAN_EID_WIDE_BW_CHANNEL_SWITCH :
1255
1255
if (!action ||
1256
- elen != sizeof (* elems -> wide_bw_chansw_ie )) {
1256
+ elen < sizeof (* elems -> wide_bw_chansw_ie )) {
1257
1257
elem_parse_failed = true;
1258
1258
break ;
1259
1259
}
@@ -1272,7 +1272,7 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
1272
1272
ie = cfg80211_find_ie (WLAN_EID_WIDE_BW_CHANNEL_SWITCH ,
1273
1273
pos , elen );
1274
1274
if (ie ) {
1275
- if (ie [1 ] = = sizeof (* elems -> wide_bw_chansw_ie ))
1275
+ if (ie [1 ] > = sizeof (* elems -> wide_bw_chansw_ie ))
1276
1276
elems -> wide_bw_chansw_ie =
1277
1277
(void * )(ie + 2 );
1278
1278
else
@@ -1316,7 +1316,7 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
1316
1316
elems -> cisco_dtpc_elem = pos ;
1317
1317
break ;
1318
1318
case WLAN_EID_ADDBA_EXT :
1319
- if (elen != sizeof (struct ieee80211_addba_ext_ie )) {
1319
+ if (elen < sizeof (struct ieee80211_addba_ext_ie )) {
1320
1320
elem_parse_failed = true;
1321
1321
break ;
1322
1322
}
@@ -1342,7 +1342,7 @@ _ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
1342
1342
elem , elems );
1343
1343
break ;
1344
1344
case WLAN_EID_S1G_CAPABILITIES :
1345
- if (elen = = sizeof (* elems -> s1g_capab ))
1345
+ if (elen > = sizeof (* elems -> s1g_capab ))
1346
1346
elems -> s1g_capab = (void * )pos ;
1347
1347
else
1348
1348
elem_parse_failed = true;
0 commit comments