aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2007-12-20 17:49:41 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:09:03 -0500
commita749716ecc85743f04f7117e3b373266b63edf7e (patch)
tree1ac30ffbb2bdddb84cae0a4acb510f5ba1829b53 /drivers/net
parent56d81bd3c76f3ac917a560c662a696aa5e29b980 (diff)
airo: sanitize APListRid handling
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/airo.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index e139a18c6acd..306a1d1c1c22 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -713,7 +713,7 @@ typedef struct {
713 713
714 714
715typedef struct { 715typedef struct {
716 u16 len; 716 __le16 len;
717 u8 ap[4][ETH_ALEN]; 717 u8 ap[4][ETH_ALEN];
718} APListRid; 718} APListRid;
719 719
@@ -1866,16 +1866,15 @@ static int readStatusRid(struct airo_info*ai, StatusRid *statr, int lock) {
1866 statr->assocStatus = le16_to_cpu(statr->assocStatus); 1866 statr->assocStatus = le16_to_cpu(statr->assocStatus);
1867 return rc; 1867 return rc;
1868} 1868}
1869static int readAPListRid(struct airo_info*ai, APListRid *aplr) { 1869
1870 int rc = PC4500_readrid(ai, RID_APLIST, aplr, sizeof(*aplr), 1); 1870static int readAPListRid(struct airo_info *ai, APListRid *aplr)
1871 aplr->len = le16_to_cpu(aplr->len); 1871{
1872 return rc; 1872 return PC4500_readrid(ai, RID_APLIST, aplr, sizeof(*aplr), 1);
1873} 1873}
1874static int writeAPListRid(struct airo_info*ai, APListRid *aplr, int lock) { 1874
1875 int rc; 1875static int writeAPListRid(struct airo_info *ai, APListRid *aplr, int lock)
1876 aplr->len = cpu_to_le16(aplr->len); 1876{
1877 rc = PC4500_writerid(ai, RID_APLIST, aplr, sizeof(*aplr), lock); 1877 return PC4500_writerid(ai, RID_APLIST, aplr, sizeof(*aplr), lock);
1878 return rc;
1879} 1878}
1880 1879
1881static int readCapabilityRid(struct airo_info *ai, CapabilityRid *capr, int lock) 1880static int readCapabilityRid(struct airo_info *ai, CapabilityRid *capr, int lock)
@@ -5145,7 +5144,7 @@ static void proc_APList_on_close( struct inode *inode, struct file *file ) {
5145 if ( !data->writelen ) return; 5144 if ( !data->writelen ) return;
5146 5145
5147 memset( &APList_rid, 0, sizeof(APList_rid) ); 5146 memset( &APList_rid, 0, sizeof(APList_rid) );
5148 APList_rid.len = sizeof(APList_rid); 5147 APList_rid.len = cpu_to_le16(sizeof(APList_rid));
5149 5148
5150 for( i = 0; i < 4 && data->writelen >= (i+1)*6*3; i++ ) { 5149 for( i = 0; i < 4 && data->writelen >= (i+1)*6*3; i++ ) {
5151 int j; 5150 int j;
@@ -5943,7 +5942,7 @@ static int airo_set_wap(struct net_device *dev,
5943 up(&local->sem); 5942 up(&local->sem);
5944 } else { 5943 } else {
5945 memset(&APList_rid, 0, sizeof(APList_rid)); 5944 memset(&APList_rid, 0, sizeof(APList_rid));
5946 APList_rid.len = sizeof(APList_rid); 5945 APList_rid.len = cpu_to_le16(sizeof(APList_rid));
5947 memcpy(APList_rid.ap[0], awrq->sa_data, ETH_ALEN); 5946 memcpy(APList_rid.ap[0], awrq->sa_data, ETH_ALEN);
5948 disable_MAC(local, 1); 5947 disable_MAC(local, 1);
5949 writeAPListRid(local, &APList_rid, 1); 5948 writeAPListRid(local, &APList_rid, 1);