diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2014-08-12 11:15:38 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2014-08-12 11:15:38 +0000 |
commit | e610d3ad1407f80f9d3f5b651e2c62962029fe20 (patch) | |
tree | ef89fbb48786d9106c38e8b138f3e61fbd301661 /package/utils/busybox | |
parent | 58ed63723a6b94fae905dcddb501adb1191c712a (diff) | |
download | upstream-e610d3ad1407f80f9d3f5b651e2c62962029fe20.tar.gz upstream-e610d3ad1407f80f9d3f5b651e2c62962029fe20.tar.bz2 upstream-e610d3ad1407f80f9d3f5b651e2c62962029fe20.zip |
BB: package: fix segfault of iwinfo.scanlist("radio0").
This is a bug revealed in r41830.
First, the static variable `char nif[IFNAMSIZ]` of nl80211_phy2ifname()
would be zeroed out if the argument is "wlan0" or the like. This will
happen in the following call stack.
nl80211_get_scanlist("radio0", buf, len);
nl80211_phy2ifname("radio0") // return static var nif with content "wlan0"
nl80211_get_scanlist(nif, buf, len); // tail call
nl80211_get_mode(nif);
nl80211_phy2ifname(nif); // zero out nif
Later we try nl80211_ifadd("") which was supposed to create interface
"tmp.", but that won't happen because nl80211_msg() will put an invalid
ifidx 0 to the nlmsg.
Then iwinfo_ifup() and iwinfo_ifdown() would fail and happily
nl80211_get_scanlist() returned 0 and left *len undefined.
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
Backport of r42151
git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@42152 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/utils/busybox')
0 files changed, 0 insertions, 0 deletions