mirror of
https://git.proxmox.com/git/efi-boot-shim
synced 2025-08-14 15:45:30 +00:00
Don't put the directory in the file path twice.
Sometimes when we're creating paths, the ImagePath can contain the directory name already. If that happens, don't add it in again. Signed-off-by: Peter Jones <pjones@redhat.com>
This commit is contained in:
parent
6e1bd3dcb7
commit
155a76bb86
3
shim.c
3
shim.c
@ -939,7 +939,8 @@ static EFI_STATUS generate_path(EFI_LOADED_IMAGE *li, CHAR16 *ImagePath,
|
||||
}
|
||||
|
||||
*PathName[0] = '\0';
|
||||
StrCat(*PathName, bootpath);
|
||||
if (StrnCaseCmp(bootpath, ImagePath, StrLen(bootpath)))
|
||||
StrCat(*PathName, bootpath);
|
||||
StrCat(*PathName, ImagePath);
|
||||
|
||||
*grubpath = FileDevicePath(device, *PathName);
|
||||
|
19
ucs2.h
19
ucs2.h
@ -54,4 +54,23 @@ StrCaseCmp(CHAR16 *s0, CHAR16 *s1)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline INTN
|
||||
__attribute__((unused))
|
||||
StrnCaseCmp(CHAR16 *s0, CHAR16 *s1, int n)
|
||||
{
|
||||
CHAR16 c0, c1;
|
||||
int x = 0;
|
||||
while (n > x++) {
|
||||
if (*s0 == L'\0' || *s1 == L'\0')
|
||||
return *s1 - *s0;
|
||||
c0 = (*s0 >= L'a' && *s0 <= L'z') ? *s0 - 32 : *s0;
|
||||
c1 = (*s1 >= L'a' && *s1 <= L'z') ? *s1 - 32 : *s1;
|
||||
if (c0 != c1)
|
||||
return c1 - c0;
|
||||
s0++;
|
||||
s1++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* SHIM_UCS2_H */
|
||||
|
Loading…
Reference in New Issue
Block a user