aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2015-05-02 19:26:28 +0300
committerDan Pasanen <dan.pasanen@gmail.com>2015-05-11 09:02:11 -0500
commit4d4d614ba37df22fdd0cfdebf1761fc6ba34327d (patch)
tree59f409fd1d69877651d1be9b4f46895a4fb8785c /src
parent341a8b3a15959e123e920b0b549faa3786903107 (diff)
downloadandroid_external_wpa_supplicant_8-4d4d614ba37df22fdd0cfdebf1761fc6ba34327d.tar.gz
android_external_wpa_supplicant_8-4d4d614ba37df22fdd0cfdebf1761fc6ba34327d.tar.bz2
android_external_wpa_supplicant_8-4d4d614ba37df22fdd0cfdebf1761fc6ba34327d.zip
EAP-pwd peer: Fix asymmetric fragmentation behavior
The L (Length) and M (More) flags needs to be cleared before deciding whether the locally generated response requires fragmentation. This fixes an issue where these flags from the server could have been invalid for the following message. In some cases, this could have resulted in triggering the wpabuf security check that would terminate the process due to invalid buffer allocation. Change-Id: Id3bb2a36b7b0a040e81ec1f1064934047606259a Signed-off-by: Jouni Malinen <j@w1.fi>
Diffstat (limited to 'src')
-rw-r--r--src/eap_peer/eap_pwd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c
index 4642527c..ac0db995 100644
--- a/src/eap_peer/eap_pwd.c
+++ b/src/eap_peer/eap_pwd.c
@@ -914,6 +914,7 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret,
/*
* we have output! Do we need to fragment it?
*/
+ lm_exch = EAP_PWD_GET_EXCHANGE(lm_exch);
len = wpabuf_len(data->outbuf);
if ((len + EAP_PWD_HDR_SIZE) > data->mtu) {
resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_PWD, data->mtu,