summaryrefslogtreecommitdiff
path: root/lib/blkid/probe.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/blkid/probe.c')
-rw-r--r--lib/blkid/probe.c17
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);
}