Author: ek.kato
Date: Fri Jan 4 08:51:09 2008
New Revision: 5107
Modified:
trunk/uim/uim-util.c
Log:
* uim/uim-util.c (uim_scm_notify_get_plugins) : Use full path for
dlopen(3).
Modified: trunk/uim/uim-util.c
==============================================================================
--- trunk/uim/uim-util.c (original)
+++ trunk/uim/uim-util.c Fri Jan 4 08:51:09 2008
@@ -315,20 +315,23 @@
if (dirp) {
while ((dp = readdir(dirp)) != NULL) {
size_t len = strlen(dp->d_name);
+ char path[PATH_MAX];
- if ((len < plen + slen) || (PATH_MAX < len) ||
+ if ((len < plen + slen) ||
+ (PATH_MAX < (strlen(NOTIFY_PLUGIN_PATH "/") + len + 1)) ||
(strcmp(dp->d_name, NOTIFY_PLUGIN_PREFIX) <= 0) ||
(strcmp(dp->d_name + len - slen, NOTIFY_PLUGIN_SUFFIX) != 0))
continue;
- handle = dlopen(dp->d_name, RTLD_NOW);
+ snprintf(path, PATH_MAX, "%s/%s", NOTIFY_PLUGIN_PATH, dp->d_name);
+ handle = dlopen(path, RTLD_NOW);
if ((str = dlerror()) != NULL) {
- fprintf(stderr, "load failed %s(%s)\n", dp->d_name, str);
+ fprintf(stderr, "load failed %s(%s)\n", path, str);
continue;
}
desc_func = (uim_notify_desc* (*)(void))dlfunc(handle,
"uim_notify_plugin_get_desc");
if (!desc_func) {
- fprintf(stderr, "cannot found 'uim_notify_get_desc()' in %s\n",
dp->d_name);
+ fprintf(stderr, "cannot found 'uim_notify_get_desc()' in %s\n", path);
dlclose(handle);
continue;
}