diff options
Diffstat (limited to 'lib/blkid/probe.c')
-rw-r--r-- | lib/blkid/probe.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c index 8f6cfa6a..6b75732e 100644 --- a/lib/blkid/probe.c +++ b/lib/blkid/probe.c @@ -208,8 +208,8 @@ static int check_for_modules(const char *fs_name) #ifdef __linux__ struct utsname uts; FILE *f; - char buf[1024], *cp, *t; - int i; + char buf[1024], *cp; + int namesz; if (uname(&uts)) return (0); @@ -218,6 +218,9 @@ static int check_for_modules(const char *fs_name) f = fopen(buf, "r"); if (!f) return (0); + + namesz = strlen(fs_name); + while (!feof(f)) { if (!fgets(buf, sizeof(buf), f)) break; @@ -229,13 +232,9 @@ static int check_for_modules(const char *fs_name) cp++; else cp = buf; - i = strlen(cp); - if (i > 3) { - t = cp + i - 3; - if (!strcmp(t, ".ko")) - *t = 0; - } - if (!strcmp(cp, fs_name)) { + if (!strncmp(cp, fs_name, namesz) && + (!strcmp(cp + namesz, ".ko") || + !strcmp(cp + namesz, ".ko.gz"))) { fclose(f); return (1); } |