Pārlūkot izejas kodu

qcacld-3.0: Add range check for P2P NOA request parameters

Add range check for P2P NOA parameters such as duration and
interval to prevent integer overflow from binary operation.

Change-Id: Iffa57d592af7ac6af7f67d80b85a276aa8faee4e
CRs-Fixed: 1072839
Archana Ramachandran 8 gadi atpakaļ
vecāks
revīzija
1e6b9262ad
1 mainītis faili ar 6 papildinājumiem un 0 dzēšanām
  1. 6 0
      core/hdd/src/wlan_hdd_p2p.c

+ 6 - 0
core/hdd/src/wlan_hdd_p2p.c

@@ -55,6 +55,7 @@
 
 /* Ms to Time Unit Micro Sec */
 #define MS_TO_TU_MUS(x)   ((x) * 1024)
+#define MAX_MUS_VAL       (INT_MAX / 1024)
 
 static uint8_t *hdd_get_action_string(uint16_t MsgType)
 {
@@ -1741,6 +1742,11 @@ int hdd_set_p2p_noa(struct net_device *dev, uint8_t *command)
 			ret);
 		return -EINVAL;
 	}
+	if (count < 0 || interval < 0 || duration < 0 ||
+	    interval > MAX_MUS_VAL || duration > MAX_MUS_VAL) {
+		hdd_err("Invalid NOA parameters");
+		return -EINVAL;
+	}
 	hdd_info("P2P_SET GO NoA: count=%d interval=%d duration=%d",
 		count, interval, duration);
 	duration = MS_TO_TU_MUS(duration);