diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-11-05 11:55:39 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-11-05 11:55:39 +0000 |
commit | a6b7e3fba56b579725b81fcf973939553c9cb55a (patch) | |
tree | cdc15ff9d948c0c524f0fb14b434735161441720 /epan/crypt | |
parent | a98414062cc05dd70645206bd48055299bafcaae (diff) |
From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
airpdcap: For FromDS and ToDS both set use magic
All 802.11 data frames on the AMP link shall be sent with ToDS and FromDS
bits in the Frame Control field both set to one. Currently for this packets
we get different associations for the same EAPOL sequence since addr2 and
addr1 change.
svn path=/trunk/; revision=45923
Diffstat (limited to 'epan/crypt')
-rw-r--r-- | epan/crypt/airpdcap.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/epan/crypt/airpdcap.c b/epan/crypt/airpdcap.c index 3f8c138964..0d1e85378f 100644 --- a/epan/crypt/airpdcap.c +++ b/epan/crypt/airpdcap.c @@ -1636,10 +1636,15 @@ AirPDcapGetStaAddress( switch(AIRPDCAP_DS_BITS(frame->fc[1])) { /* Bit 1 = FromDS, bit 0 = ToDS */ case 0: case 1: - case 3: return frame->addr2; case 2: return frame->addr1; + case 3: + if (memcmp(frame->addr1, frame->addr2, AIRPDCAP_MAC_LEN) < 0) + return frame->addr1; + else + return frame->addr2; + default: return NULL; } @@ -1653,10 +1658,15 @@ AirPDcapGetBssidAddress( case 0: return frame->addr3; case 1: - case 3: return frame->addr1; case 2: return frame->addr2; + case 3: + if (memcmp(frame->addr1, frame->addr2, AIRPDCAP_MAC_LEN) > 0) + return frame->addr1; + else + return frame->addr2; + default: return NULL; } |