]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
depmod: do not allow partial matches with "search" directive
authorAnssi Hannula <anssi@mageia.org>
Tue, 18 Mar 2014 23:26:00 +0000 (01:26 +0200)
committerLucas De Marchi <lucas.demarchi@intel.com>
Wed, 19 Mar 2014 12:18:39 +0000 (09:18 -0300)
Currently e.g. "search foo foobar built-in" will cause unpredictable
results if baz.ko is in both foo/ and foobar/, since "foo" in search may
match both of those directories and the preferred module therefore
depends on processing order.

Fix the code to ensure that the match is performed on full pathname
components only.

tools/depmod.c

index 6b5d21c822f8954c984851a22c2fad5e0709e4f1..37e6afd754cea8408c2a4730e2a7acf1767e223f 100644 (file)
@@ -1153,10 +1153,10 @@ static int depmod_module_is_higher_priority(const struct depmod *depmod, const s
                DBG("search %s\n", se->builtin ? "built-in" : se->path);
                if (se->builtin)
                        bprio = i;
-               else if (newlen >= se->len &&
+               else if (newlen > se->len && newpath[se->len] == '/' &&
                         memcmp(se->path, newpath, se->len) == 0)
                        newprio = i;
-               else if (oldlen >= se->len &&
+               else if (oldlen > se->len && oldpath[se->len] == '/' &&
                         memcmp(se->path, oldpath, se->len) == 0)
                        oldprio = i;
        }