diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-10-30 17:09:54 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-11-10 15:11:56 -0500 |
commit | 2c706002fc147decdba2658ea48e4436faca3af2 (patch) | |
tree | 3e515fa59e6f7de045579f103cba09cd05293de7 /drivers/net/ps3_gelic_wireless.c | |
parent | 9b1fbae4b242cf86a878771eb59dc600dde72ec8 (diff) |
don't use net/ieee80211.h
Convert all the drivers using net/ieee80211.h to use linux/ieee80211.h.
Contains a bugfix in libertas where the SSID parsing could overrun the
buffer when the AP sends invalid information.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Dan Williams <dcbw@redhat.com> [airo, libertas]
Acked-by: Pavel Roskin <proski@gnu.org> [orinoco]
Acked-by: David Kilroy <kilroyd@googlemail.com> [orinoco]
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/ps3_gelic_wireless.c')
-rw-r--r-- | drivers/net/ps3_gelic_wireless.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c index d10dc3ea9c79..ec2314246682 100644 --- a/drivers/net/ps3_gelic_wireless.c +++ b/drivers/net/ps3_gelic_wireless.c | |||
@@ -30,10 +30,11 @@ | |||
30 | #include <linux/ip.h> | 30 | #include <linux/ip.h> |
31 | #include <linux/tcp.h> | 31 | #include <linux/tcp.h> |
32 | #include <linux/wireless.h> | 32 | #include <linux/wireless.h> |
33 | #include <linux/ieee80211.h> | ||
34 | #include <linux/if_arp.h> | ||
33 | #include <linux/ctype.h> | 35 | #include <linux/ctype.h> |
34 | #include <linux/string.h> | 36 | #include <linux/string.h> |
35 | #include <net/iw_handler.h> | 37 | #include <net/iw_handler.h> |
36 | #include <net/ieee80211.h> | ||
37 | 38 | ||
38 | #include <linux/dma-mapping.h> | 39 | #include <linux/dma-mapping.h> |
39 | #include <net/checksum.h> | 40 | #include <net/checksum.h> |
@@ -449,9 +450,9 @@ static size_t gelic_wl_synthesize_ie(u8 *buf, | |||
449 | 450 | ||
450 | /* element id */ | 451 | /* element id */ |
451 | if (rsn) | 452 | if (rsn) |
452 | *buf++ = MFIE_TYPE_RSN; | 453 | *buf++ = WLAN_EID_RSN; |
453 | else | 454 | else |
454 | *buf++ = MFIE_TYPE_GENERIC; | 455 | *buf++ = WLAN_EID_GENERIC; |
455 | 456 | ||
456 | /* length filed; set later */ | 457 | /* length filed; set later */ |
457 | buf++; | 458 | buf++; |
@@ -539,7 +540,7 @@ static void gelic_wl_parse_ie(u8 *data, size_t len, | |||
539 | break; | 540 | break; |
540 | 541 | ||
541 | switch (item_id) { | 542 | switch (item_id) { |
542 | case MFIE_TYPE_GENERIC: | 543 | case WLAN_EID_GENERIC: |
543 | if ((OUI_LEN + 1 <= item_len) && | 544 | if ((OUI_LEN + 1 <= item_len) && |
544 | !memcmp(pos, wpa_oui, OUI_LEN) && | 545 | !memcmp(pos, wpa_oui, OUI_LEN) && |
545 | pos[OUI_LEN] == 0x01) { | 546 | pos[OUI_LEN] == 0x01) { |
@@ -547,7 +548,7 @@ static void gelic_wl_parse_ie(u8 *data, size_t len, | |||
547 | ie_info->wpa.len = item_len + 2; | 548 | ie_info->wpa.len = item_len + 2; |
548 | } | 549 | } |
549 | break; | 550 | break; |
550 | case MFIE_TYPE_RSN: | 551 | case WLAN_EID_RSN: |
551 | ie_info->rsn.data = pos - 2; | 552 | ie_info->rsn.data = pos - 2; |
552 | /* length includes the header */ | 553 | /* length includes the header */ |
553 | ie_info->rsn.len = item_len + 2; | 554 | ie_info->rsn.len = item_len + 2; |
@@ -581,7 +582,7 @@ static char *gelic_wl_translate_scan(struct net_device *netdev, | |||
581 | char *tmp; | 582 | char *tmp; |
582 | u8 rate; | 583 | u8 rate; |
583 | unsigned int i, j, len; | 584 | unsigned int i, j, len; |
584 | u8 buf[MAX_WPA_IE_LEN]; | 585 | u8 buf[64]; /* arbitrary size large enough */ |
585 | 586 | ||
586 | pr_debug("%s: <-\n", __func__); | 587 | pr_debug("%s: <-\n", __func__); |
587 | 588 | ||
@@ -1734,14 +1735,14 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl) | |||
1734 | target->essid_len = strnlen(scan_info->essid, | 1735 | target->essid_len = strnlen(scan_info->essid, |
1735 | sizeof(scan_info->essid)); | 1736 | sizeof(scan_info->essid)); |
1736 | target->rate_len = 0; | 1737 | target->rate_len = 0; |
1737 | for (r = 0; r < MAX_RATES_LENGTH; r++) | 1738 | for (r = 0; r < 12; r++) |
1738 | if (scan_info->rate[r]) | 1739 | if (scan_info->rate[r]) |
1739 | target->rate_len++; | 1740 | target->rate_len++; |
1740 | if (8 < target->rate_len) | 1741 | if (8 < target->rate_len) |
1741 | pr_info("%s: AP returns %d rates\n", __func__, | 1742 | pr_info("%s: AP returns %d rates\n", __func__, |
1742 | target->rate_len); | 1743 | target->rate_len); |
1743 | target->rate_ext_len = 0; | 1744 | target->rate_ext_len = 0; |
1744 | for (r = 0; r < MAX_RATES_EX_LENGTH; r++) | 1745 | for (r = 0; r < 16; r++) |
1745 | if (scan_info->ext_rate[r]) | 1746 | if (scan_info->ext_rate[r]) |
1746 | target->rate_ext_len++; | 1747 | target->rate_ext_len++; |
1747 | list_move_tail(&target->list, &wl->network_list); | 1748 | list_move_tail(&target->list, &wl->network_list); |