diff options
-rw-r--r-- | iwinfo_nl80211.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/iwinfo_nl80211.c b/iwinfo_nl80211.c index ef0dffa..c4b0ee2 100644 --- a/iwinfo_nl80211.c +++ b/iwinfo_nl80211.c @@ -298,12 +298,18 @@ static int nl80211_phy_idx_from_path(const char *path) char buf[128]; struct dirent *e; const char *cur_path; + int cur_path_len; + int path_len; int idx = -1; DIR *d; if (!path) return -1; + path_len = strlen(path); + if (!path_len) + return -1; + d = opendir("/sys/class/ieee80211"); if (!d) return -1; @@ -313,7 +319,11 @@ static int nl80211_phy_idx_from_path(const char *path) if (!cur_path) continue; - if (strcmp(cur_path, path) != 0) + cur_path_len = strlen(cur_path); + if (cur_path_len < path_len) + continue; + + if (strcmp(cur_path + cur_path_len - path_len, path) != 0) continue; snprintf(buf, sizeof(buf), "/sys/class/ieee80211/%s/index", e->d_name); |