Hi,

When trying to do two consecutive scans from a lua script, a segfault in 
libiwinfo.so occurs.

Example:
# lua -l 'iwinfo' -e "iw = iwinfo['nl80211'] ; iw.scanlist('wlan0') ; 
iw.scanlist('wlan0');"
Segmentation fault

This patch causes iwinfo to only 'ATTACH' to unsolicited wpa_supplicant events, 
when they are
expected.
---
 package/iwinfo/src/iwinfo_nl80211.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/package/iwinfo/src/iwinfo_nl80211.c 
b/package/iwinfo/src/iwinfo_nl80211.c
index 4f3390f..469e415 100644
--- a/package/iwinfo/src/iwinfo_nl80211.c
+++ b/package/iwinfo/src/iwinfo_nl80211.c
@@ -387,10 +387,13 @@ static char * nl80211_wpactl_info(const char *ifname, 
const char *cmd,
                goto out;
 
 
-       send(sock, "ATTACH", 6, 0);
+       if(event)
+       {
+               send(sock, "ATTACH", 6, 0);
 
-       if (nl80211_wpactl_recv(sock, buffer, sizeof(buffer)) <= 0)
-               goto out;
+               if (nl80211_wpactl_recv(sock, buffer, sizeof(buffer)) <= 0)
+                       goto out;
+       }
 
 
        send(sock, cmd, strlen(cmd), 0);
@@ -405,7 +408,7 @@ static char * nl80211_wpactl_info(const char *ifname, const 
char *cmd,
                        break;
                }
 
-               if ((!event && buffer[0] != '<') || strstr(buffer, event))
+               if ((!event && buffer[0] != '<') || (event && strstr(buffer, 
event)))
                        break;
        }
 
-- 
1.7.5.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to