Thread: [Madwifi-cvs] madwifi/net80211 ieee80211_linux.c,1.7,1.8
Status: Beta
Brought to you by:
otaku
From: Bell K. <bel...@us...> - 2005-09-26 16:37:03
|
Update of /cvsroot/madwifi/madwifi/net80211 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20500 Modified Files: ieee80211_linux.c Log Message: - fix a segfault when associated_sta is big Index: ieee80211_linux.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/ieee80211_linux.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ieee80211_linux.c 12 Jul 2005 17:20:55 -0000 1.7 --- ieee80211_linux.c 26 Sep 2005 16:36:53 -0000 1.8 *************** *** 284,289 **** proc_read_node(char *page, int space, struct ieee80211com *ic, void *arg) { ! char buf[1024]; ! char *p = buf; struct ieee80211_node *ni; struct ieee80211_node_table *nt = (struct ieee80211_node_table *)arg; --- 284,289 ---- proc_read_node(char *page, int space, struct ieee80211com *ic, void *arg) { ! char *buf; ! char *p; struct ieee80211_node *ni; struct ieee80211_node_table *nt = (struct ieee80211_node_table *)arg; *************** *** 292,298 **** u_int16_t temp; IEEE80211_NODE_LOCK(nt); TAILQ_FOREACH(ni, &nt->nt_node, ni_list) { ! /* Assume each node needs 300 bytes */ if (p - buf > space - 300) break; --- 292,301 ---- u_int16_t temp; + buf = kmalloc(space,GFP_KERNEL); + if(buf==NULL) return 0; + p = buf; IEEE80211_NODE_LOCK(nt); TAILQ_FOREACH(ni, &nt->nt_node, ni_list) { ! /* Assume each node needs 300 bytes */ if (p - buf > space - 300) break; *************** *** 382,386 **** } IEEE80211_NODE_UNLOCK(nt); ! return copy_to_user(page, buf, p - buf) ? 0 : (p - buf); } --- 385,391 ---- } IEEE80211_NODE_UNLOCK(nt); ! i = copy_to_user(page, buf, p - buf); ! kfree(buf); ! return i ? 0 : (p - buf); } |