summaryrefslogtreecommitdiff
path: root/epan/crypt/airpdcap.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/crypt/airpdcap.c')
-rw-r--r--epan/crypt/airpdcap.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/epan/crypt/airpdcap.c b/epan/crypt/airpdcap.c
index a5cc0fdf4e..065fb10fb2 100644
--- a/epan/crypt/airpdcap.c
+++ b/epan/crypt/airpdcap.c
@@ -654,6 +654,12 @@ INT AirPDcapPacketProcess(
return AIRPDCAP_RET_WRONG_DATA_SIZE;
}
+ /* Assume that the decrypt_data field is at least this size. */
+ if (tot_len > AIRPDCAP_MAX_CAPLEN) {
+ AIRPDCAP_DEBUG_PRINT_LINE("AirPDcapPacketProcess", "length too large", AIRPDCAP_DEBUG_LEVEL_3);
+ return AIRPDCAP_RET_UNSUCCESS;
+ }
+
/* get BSSID */
if ( (addr=AirPDcapGetBssidAddress((const AIRPDCAP_MAC_FRAME_ADDR4 *)(data))) != NULL) {
memcpy(id.bssid, addr, AIRPDCAP_MAC_LEN);