aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2015-05-02 19:26:28 +0300
committerMichael Bestas <mikeioannina@gmail.com>2015-11-11 19:40:00 +0200
commit4060a8f592372e56f988c12819cffb1c46cee12c (patch)
treea4296d2b92514f4ba418a4f3e2ca236ba126f773
parent84b0fb91020630c8b314c9b96d5d78cc9e562de1 (diff)
downloadandroid_external_wpa_supplicant_8-4060a8f592372e56f988c12819cffb1c46cee12c.tar.gz
android_external_wpa_supplicant_8-4060a8f592372e56f988c12819cffb1c46cee12c.tar.bz2
android_external_wpa_supplicant_8-4060a8f592372e56f988c12819cffb1c46cee12c.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>
-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 871bb685..56f1eba2 100644
--- a/src/eap_peer/eap_pwd.c
+++ b/src/eap_peer/eap_pwd.c
@@ -869,6 +869,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,