aboutsummaryrefslogtreecommitdiffstats
path: root/epan/crypt
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-11-05 11:55:39 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-11-05 11:55:39 +0000
commita6b7e3fba56b579725b81fcf973939553c9cb55a (patch)
treecdc15ff9d948c0c524f0fb14b434735161441720 /epan/crypt
parenta98414062cc05dd70645206bd48055299bafcaae (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.c14
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;
}