mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
qcacld-3.0: Use NLA_EXACT_LEN instead of NLA_UNSPEC in new kernels
The change If6d559a3aa7b8719a515e00e271e313c02f8135f has modified few attribute types from NLA_UNSPEC to NLA_BINARY. But NLA_BINARY validates only for max length and doesn't validate min length. This could cause buffer overread if userspace sends less data as the driver reads fixed length(e.g. 6 bytes for mac_addr) always. Use VENDOR_NLA_POLICY_MAC_ADDR(NLA_POLICY_ETH_ADDR) or NLA_EXACT_LEN instead of NLA_UNSPEC which validates for exact length. Change-Id: I92cc29716dff29037d14ffd2e269761149c7f74b CRs-Fixed: 2700695
This commit is contained in:
parent
61547b7304
commit
6f6a3e666d
7 changed files with 27 additions and 42 deletions
|
|
@ -4136,8 +4136,8 @@ const struct nla_policy wlan_hdd_set_roam_param_policy[
|
|||
[PARAM_NUM_BSSID] = {.type = NLA_U32},
|
||||
[PARAM_RSSI_MODIFIER] = {.type = NLA_U32},
|
||||
[PARAMS_NUM_BSSID] = {.type = NLA_U32},
|
||||
[PARAM_ROAM_BSSID] = {.type = NLA_BINARY, .len = QDF_MAC_ADDR_SIZE},
|
||||
[PARAM_SET_BSSID] = {.type = NLA_BINARY, .len = QDF_MAC_ADDR_SIZE},
|
||||
[PARAM_ROAM_BSSID] = VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[PARAM_SET_BSSID] = VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[PARAM_SET_BSSID_HINT] = {.type = NLA_FLAG},
|
||||
[PARAM_ROAM_CONTROL_CONFIG] = {.type = NLA_NESTED},
|
||||
};
|
||||
|
|
@ -6636,9 +6636,8 @@ const struct nla_policy wlan_hdd_wifi_config_policy[
|
|||
.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_BACKGROUND] = {
|
||||
.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_PEER_MAC] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_PEER_MAC] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_WINLIMIT] = {
|
||||
.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_CONFIG_BEACON_MISS_THRESHOLD_24] = {
|
||||
|
|
@ -6683,9 +6682,7 @@ const struct nla_policy wlan_hdd_wifi_config_policy[
|
|||
[RX_REORDER_TIMEOUT_VIDEO] = {.type = NLA_U32},
|
||||
[RX_REORDER_TIMEOUT_BESTEFFORT] = {.type = NLA_U32},
|
||||
[RX_REORDER_TIMEOUT_BACKGROUND] = {.type = NLA_U32},
|
||||
[RX_BLOCKSIZE_PEER_MAC] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[RX_BLOCKSIZE_PEER_MAC] = VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[RX_BLOCKSIZE_WINLIMIT] = {.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_CONFIG_LISTEN_INTERVAL] = {.type = NLA_U32 },
|
||||
[QCA_WLAN_VENDOR_ATTR_CONFIG_LRO] = {.type = NLA_U8 },
|
||||
|
|
|
|||
|
|
@ -90,9 +90,8 @@ wlan_hdd_extscan_config_policy[EXTSCAN_PARAM_MAX + 1] = {
|
|||
|
||||
[QCA_WLAN_VENDOR_ATTR_EXTSCAN_GET_CACHED_SCAN_RESULTS_CONFIG_PARAM_MAX] = {
|
||||
.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_BSSID] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_BSSID] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_RSSI_LOW] = {
|
||||
.type = NLA_S32},
|
||||
[QCA_WLAN_VENDOR_ATTR_EXTSCAN_AP_THRESHOLD_PARAM_RSSI_HIGH] = {
|
||||
|
|
|
|||
|
|
@ -927,10 +927,8 @@ struct nla_policy scan_policy[QCA_WLAN_VENDOR_ATTR_SCAN_MAX + 1] = {
|
|||
[QCA_WLAN_VENDOR_ATTR_SCAN_COOKIE] = {.type = NLA_U64},
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_IE] = {.type = NLA_BINARY,
|
||||
.len = MAX_DEFAULT_SCAN_IE_LEN},
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_MAC] = {.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_MAC_MASK] = {.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_MAC] = VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_MAC_MASK] = VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_FREQUENCIES] = {.type = NLA_NESTED},
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_SSIDS] = {.type = NLA_NESTED},
|
||||
[QCA_WLAN_VENDOR_ATTR_SCAN_SUPP_RATES] = {.type = NLA_NESTED},
|
||||
|
|
|
|||
|
|
@ -43,18 +43,16 @@
|
|||
|
||||
const struct nla_policy subnet_detect_policy[
|
||||
QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_MAX + 1] = {
|
||||
[QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_GW_MAC_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE
|
||||
},
|
||||
[QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_GW_MAC_ADDR] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_IPV4_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.type = NLA_EXACT_LEN,
|
||||
.len = QDF_IPV4_ADDR_SIZE
|
||||
},
|
||||
[QCA_WLAN_VENDOR_ATTR_GW_PARAM_CONFIG_IPV6_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.type = NLA_EXACT_LEN,
|
||||
.len = QDF_IPV6_ADDR_SIZE
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -111,9 +111,8 @@ int wlan_hdd_tdls_get_all_peers(struct hdd_adapter *adapter,
|
|||
static const struct nla_policy
|
||||
wlan_hdd_tdls_config_enable_policy[QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAX +
|
||||
1] = {
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAC_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_MAC_ADDR] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_CHANNEL] = {.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_ENABLE_GLOBAL_OPERATING_CLASS] = {.type =
|
||||
NLA_U32},
|
||||
|
|
@ -124,16 +123,14 @@ static const struct nla_policy
|
|||
static const struct nla_policy
|
||||
wlan_hdd_tdls_config_disable_policy[QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAX +
|
||||
1] = {
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAC_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_DISABLE_MAC_ADDR] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
};
|
||||
static const struct nla_policy
|
||||
wlan_hdd_tdls_config_state_change_policy[QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAX
|
||||
+ 1] = {
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAC_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_STATE_MAC_ADDR] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_NEW_STATE] = {.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_STATE_REASON] = {.type = NLA_S32},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_STATE_CHANNEL] = {.type = NLA_U32},
|
||||
|
|
@ -143,9 +140,8 @@ static const struct nla_policy
|
|||
static const struct nla_policy
|
||||
wlan_hdd_tdls_config_get_status_policy
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAX + 1] = {
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAC_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_MAC_ADDR] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_STATE] = {.type = NLA_U32},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_REASON] = {.type = NLA_S32},
|
||||
[QCA_WLAN_VENDOR_ATTR_TDLS_GET_STATUS_CHANNEL] = {.type = NLA_U32},
|
||||
|
|
|
|||
|
|
@ -42,9 +42,8 @@ interop_issues_ap_policy[QCA_WLAN_VENDOR_ATTR_INTEROP_ISSUES_AP_MAX + 1] = {
|
|||
[QCA_WLAN_VENDOR_ATTR_INTEROP_ISSUES_AP_LIST] = {
|
||||
.type = NLA_U32,
|
||||
.len = sizeof(uint32_t) },
|
||||
[QCA_WLAN_VENDOR_ATTR_INTEROP_ISSUES_AP_BSSID] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE },
|
||||
[QCA_WLAN_VENDOR_ATTR_INTEROP_ISSUES_AP_BSSID] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -83,10 +83,8 @@ const struct nla_policy vendor_attr_policy[
|
|||
.type = NLA_U32,
|
||||
.len = sizeof(uint32_t)
|
||||
},
|
||||
[QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.len = QDF_MAC_ADDR_SIZE
|
||||
},
|
||||
[QCA_WLAN_VENDOR_ATTR_NDP_PEER_DISCOVERY_MAC_ADDR] =
|
||||
VENDOR_NLA_POLICY_MAC_ADDR,
|
||||
[QCA_WLAN_VENDOR_ATTR_NDP_CONFIG_SECURITY] = {
|
||||
.type = NLA_U16,
|
||||
.len = sizeof(uint16_t)
|
||||
|
|
@ -156,7 +154,7 @@ const struct nla_policy vendor_attr_policy[
|
|||
.len = sizeof(uint32_t)
|
||||
},
|
||||
[QCA_WLAN_VENDOR_ATTR_NDP_IPV6_ADDR] = {
|
||||
.type = NLA_BINARY,
|
||||
.type = NLA_EXACT_LEN,
|
||||
.len = QDF_IPV6_ADDR_SIZE
|
||||
},
|
||||
[QCA_WLAN_VENDOR_ATTR_NDP_TRANSPORT_PORT] = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue