summaryrefslogtreecommitdiff
path: root/testing/kmod/use-path-max-for-alias-names.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/kmod/use-path-max-for-alias-names.patch')
-rw-r--r--testing/kmod/use-path-max-for-alias-names.patch147
1 files changed, 147 insertions, 0 deletions
diff --git a/testing/kmod/use-path-max-for-alias-names.patch b/testing/kmod/use-path-max-for-alias-names.patch
new file mode 100644
index 000000000..e97ae7c49
--- /dev/null
+++ b/testing/kmod/use-path-max-for-alias-names.patch
@@ -0,0 +1,147 @@
+From 6daceb2f1f4d442ba04752aaa1cf43d554d5f646 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+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
+