diff options
Diffstat (limited to 'libs/rpcd-mod-luci/src')
-rw-r--r-- | libs/rpcd-mod-luci/src/luci.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index 94ccdf2716..a16418d49d 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -802,11 +802,19 @@ static bool rpc_luci_get_iwinfo(struct blob_buf *buf, const char *devname, struct iwinfo_crypto_entry crypto = {}; struct iwinfo_hardware_id ids = {}; const struct iwinfo_ops *iw; - void *iwlib, *o, *o2, *a; - int nret; + void *iwlib = NULL; + void *o, *o2, *a; + glob_t paths; + int nret, i; if (!iw_backend || !iw_close || !iw_modenames) { - iwlib = dlopen("libiwinfo.so", RTLD_LAZY | RTLD_LOCAL); + if (glob("/usr/lib/libiwinfo.so*", 0, NULL, &paths) != 0) + return false; + + for (i = 0; i < paths.gl_pathc && !iwlib; i++) + iwlib = dlopen(paths.gl_pathv[i], RTLD_LAZY | RTLD_LOCAL); + + globfree(&paths); if (!iwlib) return false; |