diff options
author | Jouni Malinen <j@w1.fi> | 2015-05-02 19:26:28 +0300 |
---|---|---|
committer | Dan Pasanen <dan.pasanen@gmail.com> | 2015-05-11 09:02:11 -0500 |
commit | 4d4d614ba37df22fdd0cfdebf1761fc6ba34327d (patch) | |
tree | 59f409fd1d69877651d1be9b4f46895a4fb8785c /src | |
parent | 341a8b3a15959e123e920b0b549faa3786903107 (diff) | |
download | android_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.c | 1 |
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, |