From 6daceb2f1f4d442ba04752aaa1cf43d554d5f646 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Sun, 8 Jan 2012 01:02:29 -0200 Subject: [PATCH] Replace NAME_MAX with PATH_MAX for module aliases Module aliases can be bigger than NAME_MAX. So, replace with PATH_MAX that is bigger enough to hold them. Technically in some places NAME_MAX would be sufficient (those using module names only), but they use functions that can be called with alias. So increase the buffers in these cases to PATH_MAX too. --- libkmod/libkmod-module.c | 10 +++++----- libkmod/libkmod-util.c | 10 +++++----- libkmod/libkmod-util.h | 6 +++--- tools/kmod-depmod.c | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index f2359a9..880bac5 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -185,7 +185,7 @@ KMOD_EXPORT int kmod_module_new_from_name(struct kmod_ctx *ctx, { struct kmod_module *m; size_t namelen; - char name_norm[NAME_MAX]; + char name_norm[PATH_MAX]; char *namesep; if (ctx == NULL || name == NULL || mod == NULL) @@ -237,11 +237,11 @@ int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias, const char *name, struct kmod_module **mod) { int err; - char key[NAME_MAX]; + char key[PATH_MAX]; size_t namelen = strlen(name); size_t aliaslen = strlen(alias); - if (namelen + aliaslen + 2 > NAME_MAX) + if (namelen + aliaslen + 2 > PATH_MAX) return -ENAMETOOLONG; memcpy(key, name, namelen); @@ -283,7 +283,7 @@ KMOD_EXPORT int kmod_module_new_from_path(struct kmod_ctx *ctx, struct kmod_module *m; int err; struct stat st; - char name[NAME_MAX]; + char name[PATH_MAX]; char *abspath; size_t namelen; @@ -434,7 +434,7 @@ KMOD_EXPORT int kmod_module_new_from_lookup(struct kmod_ctx *ctx, struct kmod_list **list) { int err; - char alias[NAME_MAX]; + char alias[PATH_MAX]; if (ctx == NULL || given_alias == NULL) return -ENOENT; diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c index 75e2fea..344d94a 100644 --- a/libkmod/libkmod-util.c +++ b/libkmod/libkmod-util.c @@ -121,11 +121,11 @@ char *underscores(struct kmod_ctx *ctx, char *s) return s; } -inline int alias_normalize(const char *alias, char buf[NAME_MAX], size_t *len) +inline int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len) { size_t s; - for (s = 0; s < NAME_MAX - 1; s++) { + for (s = 0; s < PATH_MAX - 1; s++) { const char c = alias[s]; switch (c) { case '-': @@ -160,12 +160,12 @@ finish: return 0; } -inline char *modname_normalize(const char *modname, char buf[NAME_MAX], +inline char *modname_normalize(const char *modname, char buf[PATH_MAX], size_t *len) { size_t s; - for (s = 0; s < NAME_MAX - 1; s++) { + for (s = 0; s < PATH_MAX - 1; s++) { const char c = modname[s]; if (c == '-') buf[s] = '_'; @@ -183,7 +183,7 @@ inline char *modname_normalize(const char *modname, char buf[NAME_MAX], return buf; } -char *path_to_modname(const char *path, char buf[NAME_MAX], size_t *len) +char *path_to_modname(const char *path, char buf[PATH_MAX], size_t *len) { char *modname; diff --git a/libkmod/libkmod-util.h b/libkmod/libkmod-util.h index 3cd352c..e8ed5ad 100644 --- a/libkmod/libkmod-util.h +++ b/libkmod/libkmod-util.h @@ -20,9 +20,9 @@ int read_str_ulong(int fd, unsigned long *value, int base) __must_check __attrib char *strchr_replace(char *s, int c, char r); bool path_is_absolute(const char *p) __must_check __attribute__((nonnull(1))); char *path_make_absolute_cwd(const char *p) __must_check __attribute__((nonnull(1))); -int alias_normalize(const char *alias, char buf[NAME_MAX], size_t *len) __must_check __attribute__((nonnull(1,2))); -char *modname_normalize(const char *modname, char buf[NAME_MAX], size_t *len) __attribute__((nonnull(1, 2))); -char *path_to_modname(const char *path, char buf[NAME_MAX], size_t *len) __attribute__((nonnull(2))); +int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len) __must_check __attribute__((nonnull(1,2))); +char *modname_normalize(const char *modname, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(1, 2))); +char *path_to_modname(const char *path, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(2))); unsigned long long ts_usec(const struct timespec *ts); #endif diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c index 70c397c..4726522 100644 --- a/tools/kmod-depmod.c +++ b/tools/kmod-depmod.c @@ -1249,7 +1249,7 @@ static int depmod_modules_search_file(struct depmod *depmod, size_t baselen, siz struct kmod_module *kmod; struct mod *mod; const char *relpath; - char modname[NAME_MAX]; + char modname[PATH_MAX]; const struct kmod_ext *eitr; size_t modnamelen; uint8_t matches = 0; @@ -2101,7 +2101,7 @@ static int output_builtin_bin(struct depmod *depmod, FILE *out) { FILE *in; struct index_node *idx; - char infile[PATH_MAX], line[PATH_MAX], modname[NAME_MAX]; + char infile[PATH_MAX], line[PATH_MAX], modname[PATH_MAX]; if (out == stdout) return 0; -- 1.7.8.1