loader: fix loading of kernels with . in path

The loader indended to search the kernel file name (only) for . but
instead searched the entire path, so paths like
"boot/test.elfv2/kernel" would not work.

Submitted by:	alfredo.junior_eldorado.org.br
Reviewed by:	kevans
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D19658
This commit is contained in:
Ed Maste 2019-03-20 16:24:47 +00:00
parent 45d72c7d7f
commit fe6ee08134

View File

@ -868,14 +868,16 @@ fake_modname(const char *name)
sp++;
else
sp = name;
ep = strrchr(name, '.');
if (ep) {
if (ep == name) {
sp = invalid_name;
ep = invalid_name + sizeof(invalid_name) - 1;
}
} else
ep = name + strlen(name);
ep = strrchr(sp, '.');
if (ep == NULL) {
ep = sp + strlen(sp);
}
if (ep == sp) {
sp = invalid_name;
ep = invalid_name + sizeof(invalid_name) - 1;
}
len = ep - sp;
fp = malloc(len + 1);
if (fp == NULL)