Fix all cases of stack usage exceeding 1024 bytes
authorproski <proski@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Tue, 12 May 2009 20:05:46 +0000 (20:05 +0000)
committerproski <proski@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Tue, 12 May 2009 20:05:46 +0000 (20:05 +0000)
git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@4022 0192ed92-7a03-0410-a25b-9323aeb14dbd

net80211/ieee80211_linux.c
net80211/ieee80211_skb.c
net80211/ieee80211_wireless.c

index 9d327a24b47b0c1985bb1e3f873d9ac0b4f3f64e..a64239f1b0c592ebfc46695de7a4e9343f7f3602 100644 (file)
@@ -288,7 +288,7 @@ ieee80211_notify_sta_stats(struct ieee80211_node *ni)
        static const char *tag = "STA-TRAFFIC-STAT";
        struct net_device *dev = vap->iv_dev;
        union iwreq_data wreq;
-       char buf[1024];
+       char buf[256];
 
        snprintf(buf, sizeof(buf), "%s\nmac=" MAC_FMT "\nrx_packets=%u\nrx_bytes=%llu\n"
                        "tx_packets=%u\ntx_bytes=%llu\n", tag,
index ca3e510e88a70a20ea833c4c6159f26b6c0c16f3..c881cf5e06faaf82892e083bf0b490311b022113 100644 (file)
@@ -105,7 +105,7 @@ static void skb_print_message(
 {
        va_list args;
        char skb_count[32] = { '\0' };
-       char expanded_message[1024] = { '\0' };
+       char expanded_message[256] = { '\0' };
        if (show_counter) {
 #ifdef IEEE80211_DEBUG_REFCNT
                snprintf(skb_count, 
index 5eb1c442cb9e6a2f65d1548d5ef863576144d0bd..12cabf8634892c47270093c6719c76a5aea2513d 100644 (file)
@@ -1628,17 +1628,21 @@ ieee80211_ioctl_iwaplist(struct net_device *dev, struct iw_request_info *info,
 {
        struct ieee80211vap *vap = netdev_priv(dev);
        struct ieee80211com *ic = vap->iv_ic;
-       struct waplistreq req;          /* XXX off stack */
+       struct waplistreq *req;
 
-       req.vap = vap;
-       req.i = 0;
-       ieee80211_scan_iterate(ic, waplist_cb, &req);
+       req = kmalloc(sizeof(struct waplistreq), GFP_KERNEL);
+       if (!req)
+               return -ENOMEM;
+
+       req->vap = vap;
+       req->i = 0;
+       ieee80211_scan_iterate(ic, waplist_cb, req);
 
-       data->length = req.i;
-       memcpy(extra, &req.addr, req.i * sizeof(req.addr[0]));
+       data->length = req->i;
+       memcpy(extra, &req->addr, req->i * sizeof(req->addr[0]));
        data->flags = 1;                /* signal quality present (sort of) */
-       memcpy(extra + req.i * sizeof(req.addr[0]), &req.qual,
-               req.i * sizeof(req.qual[0]));
+       memcpy(extra + req->i * sizeof(req->addr[0]), &req->qual,
+               req->i * sizeof(req->qual[0]));
 
        return 0;
 }