From: Gustavo Sverzut Barbieri Date: Sat, 10 Dec 2011 23:00:19 +0000 (-0200) Subject: always normalize user-given alias. X-Git-Tag: v1~55^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d917f2743e13e405f7042a31f9e3754f3e95da0e;p=thirdparty%2Fkmod.git always normalize user-given alias. --- diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index 738c3f3f..ca25bc74 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -60,7 +60,7 @@ struct kmod_module { char name[]; }; -static inline char *modname_normalize(const char *modname, char buf[NAME_MAX], +inline char *modname_normalize(const char *modname, char buf[NAME_MAX], size_t *len) { size_t s; @@ -318,10 +318,11 @@ KMOD_EXPORT struct kmod_module *kmod_module_ref(struct kmod_module *mod) } while (0) KMOD_EXPORT int kmod_module_new_from_lookup(struct kmod_ctx *ctx, - const char *alias, + const char *given_alias, struct kmod_list **list) { int err; + char alias[NAME_MAX]; if (ctx == NULL || alias == NULL) return -ENOENT; @@ -331,6 +332,8 @@ KMOD_EXPORT int kmod_module_new_from_lookup(struct kmod_ctx *ctx, return -ENOSYS; } + modname_normalize(given_alias, alias, NULL); + /* Aliases from config file override all the others */ err = kmod_lookup_alias_from_config(ctx, alias, list); CHECK_ERR_AND_FINISH(err, fail, list, finish); diff --git a/libkmod/libkmod-private.h b/libkmod/libkmod-private.h index eb98ddc2..ce829643 100644 --- a/libkmod/libkmod-private.h +++ b/libkmod/libkmod-private.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "macro.h" #include "libkmod.h" @@ -103,6 +104,7 @@ const char *kmod_command_get_modname(const struct kmod_list *l) __attribute__((n /* libkmod-module.c */ +char *modname_normalize(const char *modname, char buf[NAME_MAX], size_t *len) __attribute__((nonnull(1, 2))); int kmod_module_parse_depline(struct kmod_module *mod, char *line) __attribute__((nonnull(1, 2))); /* libkmod-hash.c */ diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c index 59ed81b7..4ff6d342 100644 --- a/libkmod/libkmod.c +++ b/libkmod/libkmod.c @@ -623,9 +623,10 @@ KMOD_EXPORT void kmod_unload_resources(struct kmod_ctx *ctx) } } -KMOD_EXPORT int kmod_resolve_alias_options(struct kmod_ctx *ctx, const char *alias, char **options) +KMOD_EXPORT int kmod_resolve_alias_options(struct kmod_ctx *ctx, const char *given_alias, char **options) { struct kmod_list *modules = NULL, *l; + char alias[NAME_MAX]; char *opts = NULL; size_t optslen = 0; int err; @@ -633,6 +634,8 @@ KMOD_EXPORT int kmod_resolve_alias_options(struct kmod_ctx *ctx, const char *ali if (ctx == NULL || options == NULL) return -ENOENT; + modname_normalize(given_alias, alias, NULL); + err = kmod_module_new_from_lookup(ctx, alias, &modules); if (err >= 0) { kmod_list_foreach(l, modules) {