P2P: Validate the freq in p2p_group_add
authorIlan Peer <ilan.peer@intel.com>
Sun, 25 Aug 2013 08:28:56 +0000 (11:28 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 25 Aug 2013 08:28:56 +0000 (11:28 +0300)
Add additional input verification for the frequency parameter in
p2p_group_add (and other P2P operations for that matter). Without this
verification invalid freq could be set and not handled properly.

Signed-hostap: Ilan Peer <ilan.peer@intel.com>

src/p2p/p2p_utils.c

index 0da2682..deb7aa9 100644 (file)
@@ -109,6 +109,9 @@ int p2p_freq_to_channel(unsigned int freq, u8 *op_class, u8 *channel)
 {
        /* TODO: more operating classes */
        if (freq >= 2412 && freq <= 2472) {
+               if ((freq - 2407) % 5)
+                       return -1;
+
                *op_class = 81; /* 2.407 GHz, channels 1..13 */
                *channel = (freq - 2407) / 5;
                return 0;
@@ -121,12 +124,18 @@ int p2p_freq_to_channel(unsigned int freq, u8 *op_class, u8 *channel)
        }
 
        if (freq >= 5180 && freq <= 5240) {
+               if ((freq - 5000) % 5)
+                       return -1;
+
                *op_class = 115; /* 5 GHz, channels 36..48 */
                *channel = (freq - 5000) / 5;
                return 0;
        }
 
        if (freq >= 5745 && freq <= 5805) {
+               if ((freq - 5000) % 5)
+                       return -1;
+
                *op_class = 124; /* 5 GHz, channels 149..161 */
                *channel = (freq - 5000) / 5;
                return 0;