Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 571d6eee authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo Committed by Jeff Garzik
Browse files

[PATCH] Check ieee80211softmac_auth_resp kmalloc result



And use kmemdup and kzalloc where applicable

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8e87295b
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ static int ieee80211_networks_allocate(struct ieee80211_device *ieee)
		return 0;

	ieee->networks =
	    kmalloc(MAX_NETWORK_COUNT * sizeof(struct ieee80211_network),
	    kzalloc(MAX_NETWORK_COUNT * sizeof(struct ieee80211_network),
		    GFP_KERNEL);
	if (!ieee->networks) {
		printk(KERN_WARNING "%s: Out of memory allocating beacons\n",
@@ -75,9 +75,6 @@ static int ieee80211_networks_allocate(struct ieee80211_device *ieee)
		return -ENOMEM;
	}

	memset(ieee->networks, 0,
	       MAX_NETWORK_COUNT * sizeof(struct ieee80211_network));

	return 0;
}

+3 −4
Original line number Diff line number Diff line
@@ -1304,12 +1304,11 @@ static int ieee80211_parse_info_param(struct ieee80211_info_element
		case MFIE_TYPE_IBSS_DFS:
			if (network->ibss_dfs)
				break;
			network->ibss_dfs =
			    kmalloc(info_element->len, GFP_ATOMIC);
			network->ibss_dfs = kmemdup(info_element->data,
						    info_element->len,
						    GFP_ATOMIC);
			if (!network->ibss_dfs)
				return 1;
			memcpy(network->ibss_dfs, info_element->data,
			       info_element->len);
			network->flags |= NETWORK_HAS_IBSS_DFS;
			break;

+10 −4
Original line number Diff line number Diff line
@@ -216,10 +216,16 @@ ieee80211softmac_auth_resp(struct net_device *dev, struct ieee80211_auth *auth)
			net->challenge_len = *data++; 	
			if (net->challenge_len > WLAN_AUTH_CHALLENGE_LEN)
				net->challenge_len = WLAN_AUTH_CHALLENGE_LEN;
			if (net->challenge != NULL)
			kfree(net->challenge);
			net->challenge = kmalloc(net->challenge_len, GFP_ATOMIC);
			memcpy(net->challenge, data, net->challenge_len);
			net->challenge = kmemdup(data, net->challenge_len,
						 GFP_ATOMIC);
			if (net->challenge == NULL) {
				printkl(KERN_NOTICE PFX "Shared Key "
					"Authentication failed due to "
					"memory shortage.\n");
				spin_unlock_irqrestore(&mac->lock, flags);
				break;
			}
			aq->state = IEEE80211SOFTMAC_AUTH_SHARED_RESPONSE; 

			/* We reuse the work struct from the auth request here.