Use expanded path names when loading plug-ins
This commit is contained in:
@@ -201,21 +201,18 @@ load_plugins(krb5_context context)
|
|||||||
dirs = rk_UNCONST(sysplugin_dirs);
|
dirs = rk_UNCONST(sysplugin_dirs);
|
||||||
|
|
||||||
for (di = dirs; *di != NULL; di++) {
|
for (di = dirs; *di != NULL; di++) {
|
||||||
#ifdef KRB5_USE_PATH_TOKENS
|
char * dir = *di;
|
||||||
{
|
|
||||||
char * dir = NULL;
|
|
||||||
|
|
||||||
|
#ifdef KRB5_USE_PATH_TOKENS
|
||||||
if (_krb5_expand_path_tokens(context, *di, &dir))
|
if (_krb5_expand_path_tokens(context, *di, &dir))
|
||||||
continue;
|
goto next_dir;
|
||||||
|
#endif
|
||||||
|
|
||||||
d = opendir(dir);
|
d = opendir(dir);
|
||||||
|
|
||||||
free(dir);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
d = opendir(*di);
|
|
||||||
#endif
|
|
||||||
if (d == NULL)
|
if (d == NULL)
|
||||||
continue;
|
goto next_dir;
|
||||||
|
|
||||||
rk_cloexec_dir(d);
|
rk_cloexec_dir(d);
|
||||||
|
|
||||||
while ((entry = readdir(d)) != NULL) {
|
while ((entry = readdir(d)) != NULL) {
|
||||||
@@ -231,11 +228,11 @@ load_plugins(krb5_context context)
|
|||||||
{ /* support loading bundles on MacOS */
|
{ /* support loading bundles on MacOS */
|
||||||
size_t len = strlen(n);
|
size_t len = strlen(n);
|
||||||
if (len > 7 && strcmp(&n[len - 7], ".bundle") == 0)
|
if (len > 7 && strcmp(&n[len - 7], ".bundle") == 0)
|
||||||
ret = asprintf(&path, "%s/%s/Contents/MacOS/%.*s", *di, n, (int)(len - 7), n);
|
ret = asprintf(&path, "%s/%s/Contents/MacOS/%.*s", dir, n, (int)(len - 7), n);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (ret < 0 || path == NULL)
|
if (ret < 0 || path == NULL)
|
||||||
ret = asprintf(&path, "%s/%s", *di, n);
|
ret = asprintf(&path, "%s/%s", dir, n);
|
||||||
|
|
||||||
if (ret < 0 || path == NULL) {
|
if (ret < 0 || path == NULL) {
|
||||||
ret = ENOMEM;
|
ret = ENOMEM;
|
||||||
@@ -254,6 +251,10 @@ load_plugins(krb5_context context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(d);
|
closedir(d);
|
||||||
|
|
||||||
|
next_dir:
|
||||||
|
if (dir != *di)
|
||||||
|
free(dir);
|
||||||
}
|
}
|
||||||
if (dirs != rk_UNCONST(sysplugin_dirs))
|
if (dirs != rk_UNCONST(sysplugin_dirs))
|
||||||
krb5_config_free_strings(dirs);
|
krb5_config_free_strings(dirs);
|
||||||
|
Reference in New Issue
Block a user