nl80211: fix path compatibility issue
authorFelix Fietkau <nbd@nbd.name>
Mon, 28 Jun 2021 13:30:28 +0000 (15:30 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 28 Jun 2021 13:39:22 +0000 (15:39 +0200)
The previous shell script implementation accepted shorter path values
that omitted initial parts before the pcie bus node by only checking if
the configured path is included in the determined path
Add support for doing the same thing here

Signed-off-by: Felix Fietkau <nbd@nbd.name>
iwinfo_nl80211.c

index ef0dffaf12e2a6465a6d971ad704e72c4e4b9c94..c4b0ee2d7f0635a99ab6a3b0e309319e85bcd6a4 100644 (file)
@@ -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);