Browse Source

P2P: Do not allow re-selection of GO channel if forced_freq in use

Even if the peer does not accept the forced channel, we should not allow
the forced_freq parameter to be be overridden, i.e., such a case needs
to result in GO Negotiation failure.

Signed-hostap: Jouni Malinen <j@w1.fi>
Jouni Malinen 12 years ago
parent
commit
bd594ea0da
1 changed files with 8 additions and 1 deletions
  1. 8 1
      src/p2p/p2p_go_neg.c

+ 8 - 1
src/p2p/p2p_go_neg.c

@@ -442,8 +442,15 @@ static int p2p_go_select_channel(struct p2p_data *p2p, struct p2p_device *dev,
 	}
 
 	if (!p2p_channels_includes(&intersection, p2p->op_reg_class,
-				   p2p->op_channel))
+				   p2p->op_channel)) {
+		if (dev->flags & P2P_DEV_FORCE_FREQ) {
+			*status = P2P_SC_FAIL_NO_COMMON_CHANNELS;
+			wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG, "P2P: Peer does "
+				"not support the forced channel");
+			return -1;
+		}
 		p2p_reselect_channel(p2p, &intersection);
+	}
 
 	if (!p2p->ssid_set) {
 		p2p_build_ssid(p2p, p2p->ssid, &p2p->ssid_len);