aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorJean Tourrilhes <jt@hpl.hp.com>2006-10-10 17:45:46 -0400
committerJohn W. Linville <linville@tuxdriver.com>2006-10-16 20:09:48 -0400
commit53077944f119808df3d1c6be07241f17a87e7c28 (patch)
tree3427e3f0ba877eaeaed102ebcd32fb90afa5e865 /drivers/net/wireless
parent683f8c9e00d2aa911382186ca891bd221efaea74 (diff)
[PATCH] wireless: More WE-21 potential overflows...
After the Orinoco issue, I did an audit of other drivers for the same issue. Three drivers were NULL terminating the ESSID, which could cause an overflow in WE-21 when the ESSID has maximum size. Signed-off-by: Jean Tourrilhes <jt@hpl.hp.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/airo.c1
-rw-r--r--drivers/net/wireless/atmel.c2
-rw-r--r--drivers/net/wireless/ray_cs.c1
3 files changed, 0 insertions, 4 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 9d5427a6e609..e0710fa9702e 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -5970,7 +5970,6 @@ static int airo_get_essid(struct net_device *dev,
5970 5970
5971 /* Get the current SSID */ 5971 /* Get the current SSID */
5972 memcpy(extra, status_rid.SSID, status_rid.SSIDlen); 5972 memcpy(extra, status_rid.SSID, status_rid.SSIDlen);
5973 extra[status_rid.SSIDlen] = '\0';
5974 /* If none, we may want to get the one that was set */ 5973 /* If none, we may want to get the one that was set */
5975 5974
5976 /* Push it out ! */ 5975 /* Push it out ! */
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 31eed85de60f..0c07b8b7250d 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1678,11 +1678,9 @@ static int atmel_get_essid(struct net_device *dev,
1678 /* Get the current SSID */ 1678 /* Get the current SSID */
1679 if (priv->new_SSID_size != 0) { 1679 if (priv->new_SSID_size != 0) {
1680 memcpy(extra, priv->new_SSID, priv->new_SSID_size); 1680 memcpy(extra, priv->new_SSID, priv->new_SSID_size);
1681 extra[priv->new_SSID_size] = '\0';
1682 dwrq->length = priv->new_SSID_size; 1681 dwrq->length = priv->new_SSID_size;
1683 } else { 1682 } else {
1684 memcpy(extra, priv->SSID, priv->SSID_size); 1683 memcpy(extra, priv->SSID, priv->SSID_size);
1685 extra[priv->SSID_size] = '\0';
1686 dwrq->length = priv->SSID_size; 1684 dwrq->length = priv->SSID_size;
1687 } 1685 }
1688 1686
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index 0b381d77015c..7fbfc9e41d07 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -1198,7 +1198,6 @@ static int ray_get_essid(struct net_device *dev,
1198 1198
1199 /* Get the essid that was set */ 1199 /* Get the essid that was set */
1200 memcpy(extra, local->sparm.b5.a_current_ess_id, IW_ESSID_MAX_SIZE); 1200 memcpy(extra, local->sparm.b5.a_current_ess_id, IW_ESSID_MAX_SIZE);
1201 extra[IW_ESSID_MAX_SIZE] = '\0';
1202 1201
1203 /* Push it out ! */ 1202 /* Push it out ! */
1204 dwrq->length = strlen(extra); 1203 dwrq->length = strlen(extra);