Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:Update
grub2.3460
0001-grub-core-kern-efi-efi.c-Ensure-that-the-r...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-grub-core-kern-efi-efi.c-Ensure-that-the-result-star.patch of Package grub2.3460
From 7e7293d745ef7c0a13d8cbf12f474843edfdd0ab Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko <phcoder@gmail.com> Date: Sat, 18 Jan 2014 16:41:47 +0100 Subject: [PATCH] * grub-core/kern/efi/efi.c: Ensure that the result starts with / and has no //. --- ChangeLog | 5 +++++ grub-core/kern/efi/efi.c | 25 +++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) Index: grub-2.02~beta2/grub-core/kern/efi/efi.c =================================================================== --- grub-2.02~beta2.orig/grub-core/kern/efi/efi.c +++ grub-2.02~beta2/grub-core/kern/efi/efi.c @@ -337,7 +337,7 @@ grub_efi_modules_addr (void) char * grub_efi_get_filename (grub_efi_device_path_t *dp0) { - char *name = 0, *p; + char *name = 0, *p, *pi; grub_size_t filesize = 0; grub_efi_device_path_t *dp; @@ -356,7 +356,7 @@ grub_efi_get_filename (grub_efi_device_p grub_efi_uint16_t len; len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4) / sizeof (grub_efi_char16_t)); - filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 1; + filesize += GRUB_MAX_UTF8_PER_UTF16 * len + 2; } dp = GRUB_EFI_NEXT_DEVICE_PATH (dp); @@ -384,12 +384,12 @@ grub_efi_get_filename (grub_efi_device_p grub_efi_file_path_device_path_t *fp; grub_efi_uint16_t len; - if (p != name) - *p++ = '/'; + *p++ = '/'; len = ((GRUB_EFI_DEVICE_PATH_LENGTH (dp) - 4) / sizeof (grub_efi_char16_t)); fp = (grub_efi_file_path_device_path_t *) dp; + p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len); } @@ -398,10 +398,19 @@ grub_efi_get_filename (grub_efi_device_p *p = '\0'; - /* EFI breaks paths with backslashes. */ - for (p = name; *p; p++) - if (*p == '\\') - *p = '/'; + for (pi = name, p = name; *pi;) + { + /* EFI breaks paths with backslashes. */ + if (*pi == '\\' || *pi == '/') + { + *p++ = '/'; + while (*pi == '\\' || *pi == '/') + pi++; + continue; + } + *p++ = *pi++; + } + *p = '\0'; return name; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor