]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-boot: Make stra_to_path/stra_to_str non-failing
authorJan Janssen <medhefgo@web.de>
Mon, 15 Nov 2021 11:31:48 +0000 (12:31 +0100)
committerJan Janssen <medhefgo@web.de>
Mon, 29 Nov 2021 15:20:45 +0000 (16:20 +0100)
src/boot/efi/boot.c
src/boot/efi/linux.c
src/boot/efi/util.c
src/boot/efi/util.h

index 05aecabc8a01c2ff9fe44c47317d23c5edebb524..23f9980315e120c7d1b1f1495794dce70c371987 100644 (file)
@@ -1096,7 +1096,7 @@ static void config_defaults_load_from_file(Config *config, CHAR8 *content) {
                         else {
                                 _cleanup_freepool_ CHAR16 *s = NULL;
 
-                                s = stra_to_str(value);
+                                s = xstra_to_str(value);
                                 config->timeout_sec_config = MIN(Atoi(s), TIMEOUT_TYPE_MAX);
                         }
                         config->timeout_sec = config->timeout_sec_config;
@@ -1109,7 +1109,7 @@ static void config_defaults_load_from_file(Config *config, CHAR8 *content) {
                                 continue;
                         }
                         FreePool(config->entry_default_config);
-                        config->entry_default_config = stra_to_str(value);
+                        config->entry_default_config = xstra_to_str(value);
                         continue;
                 }
 
@@ -1144,7 +1144,7 @@ static void config_defaults_load_from_file(Config *config, CHAR8 *content) {
                         else {
                                 _cleanup_freepool_ CHAR16 *s = NULL;
 
-                                s = stra_to_str(value);
+                                s = xstra_to_str(value);
                                 config->console_mode = MIN(Atoi(s), (UINTN)CONSOLE_MODE_RANGE_MAX);
                         }
 
@@ -1377,26 +1377,26 @@ static void config_entry_add_from_file(
         while ((line = line_get_key_value(content, (CHAR8 *)" \t", &pos, &key, &value))) {
                 if (strcmpa((CHAR8 *)"title", key) == 0) {
                         FreePool(entry->title);
-                        entry->title = stra_to_str(value);
+                        entry->title = xstra_to_str(value);
                         continue;
                 }
 
                 if (strcmpa((CHAR8 *)"version", key) == 0) {
                         FreePool(entry->version);
-                        entry->version = stra_to_str(value);
+                        entry->version = xstra_to_str(value);
                         continue;
                 }
 
                 if (strcmpa((CHAR8 *)"machine-id", key) == 0) {
                         FreePool(entry->machine_id);
-                        entry->machine_id = stra_to_str(value);
+                        entry->machine_id = xstra_to_str(value);
                         continue;
                 }
 
                 if (strcmpa((CHAR8 *)"linux", key) == 0) {
                         FreePool(entry->loader);
                         entry->type = LOADER_LINUX;
-                        entry->loader = stra_to_path(value);
+                        entry->loader = xstra_to_path(value);
                         entry->key = 'l';
                         continue;
                 }
@@ -1404,7 +1404,7 @@ static void config_entry_add_from_file(
                 if (strcmpa((CHAR8 *)"efi", key) == 0) {
                         entry->type = LOADER_EFI;
                         FreePool(entry->loader);
-                        entry->loader = stra_to_path(value);
+                        entry->loader = xstra_to_path(value);
 
                         /* do not add an entry for ourselves */
                         if (loaded_image_path && StriCmp(entry->loader, loaded_image_path) == 0) {
@@ -1425,14 +1425,14 @@ static void config_entry_add_from_file(
 
                 if (strcmpa((CHAR8 *)"devicetree", key) == 0) {
                         FreePool(entry->devicetree);
-                        entry->devicetree = stra_to_path(value);
+                        entry->devicetree = xstra_to_path(value);
                         continue;
                 }
 
                 if (strcmpa((CHAR8 *)"initrd", key) == 0) {
                         _cleanup_freepool_ CHAR16 *new = NULL;
 
-                        new = stra_to_path(value);
+                        new = xstra_to_path(value);
                         if (initrd) {
                                 CHAR16 *s;
 
@@ -1448,7 +1448,7 @@ static void config_entry_add_from_file(
                 if (strcmpa((CHAR8 *)"options", key) == 0) {
                         _cleanup_freepool_ CHAR16 *new = NULL;
 
-                        new = stra_to_str(value);
+                        new = xstra_to_str(value);
                         if (entry->options) {
                                 CHAR16 *s;
 
@@ -2057,49 +2057,49 @@ static void config_entry_add_linux(
                 while ((line = line_get_key_value(content, (CHAR8 *)"=", &pos, &key, &value))) {
                         if (strcmpa((const CHAR8*) "PRETTY_NAME", key) == 0) {
                                 FreePool(os_pretty_name);
-                                os_pretty_name = stra_to_str(value);
+                                os_pretty_name = xstra_to_str(value);
                                 continue;
                         }
 
                         if (strcmpa((const CHAR8*) "IMAGE_ID", key) == 0) {
                                 FreePool(os_image_id);
-                                os_image_id = stra_to_str(value);
+                                os_image_id = xstra_to_str(value);
                                 continue;
                         }
 
                         if (strcmpa((const CHAR8*) "NAME", key) == 0) {
                                 FreePool(os_name);
-                                os_name = stra_to_str(value);
+                                os_name = xstra_to_str(value);
                                 continue;
                         }
 
                         if (strcmpa((const CHAR8*) "ID", key) == 0) {
                                 FreePool(os_id);
-                                os_id = stra_to_str(value);
+                                os_id = xstra_to_str(value);
                                 continue;
                         }
 
                         if (strcmpa((const CHAR8*) "IMAGE_VERSION", key) == 0) {
                                 FreePool(os_image_version);
-                                os_image_version = stra_to_str(value);
+                                os_image_version = xstra_to_str(value);
                                 continue;
                         }
 
                         if (strcmpa((const CHAR8*) "VERSION", key) == 0) {
                                 FreePool(os_version);
-                                os_version = stra_to_str(value);
+                                os_version = xstra_to_str(value);
                                 continue;
                         }
 
                         if (strcmpa((const CHAR8*) "VERSION_ID", key) == 0) {
                                 FreePool(os_version_id);
-                                os_version_id = stra_to_str(value);
+                                os_version_id = xstra_to_str(value);
                                 continue;
                         }
 
                         if (strcmpa((const CHAR8*) "BUILD_ID", key) == 0) {
                                 FreePool(os_build_id);
-                                os_build_id = stra_to_str(value);
+                                os_build_id = xstra_to_str(value);
                                 continue;
                         }
                 }
@@ -2142,9 +2142,7 @@ static void config_entry_add_linux(
                         if (content[szs[SECTION_CMDLINE] - 1] == '\n')
                                 content[szs[SECTION_CMDLINE] - 1] = '\0';
 
-                        entry->options = stra_to_str(content);
-                        if (!entry->options)
-                                return (void) log_oom();
+                        entry->options = xstra_to_str(content);
                 }
         }
 }
index c20ddbdfc6e31f7dae7054f979d43509f365577b..8e3afb795b4c52d7d14985bf878614a2e478744c 100644 (file)
@@ -46,13 +46,9 @@ static EFI_STATUS loaded_image_register(
                 .ImageSize = linux_length
         };
 
-        /* if a cmdline is set convert it to UTF16 */
+        /* if a cmdline is set convert it to UCS2 */
         if (cmdline) {
-                loaded_image->LoadOptions = stra_to_str(cmdline);
-                if (!loaded_image->LoadOptions) {
-                        loaded_image = loaded_image_free(loaded_image);
-                        return EFI_OUT_OF_RESOURCES;
-                }
+                loaded_image->LoadOptions = xstra_to_str(cmdline);
                 loaded_image->LoadOptionsSize = StrSize(loaded_image->LoadOptions);
         }
 
index 4d981ca7e57baf5e59fce99dcfbd09b2ecdce145..aa3c249562b166959ee67f9f2b01869b146badef 100644 (file)
@@ -358,7 +358,7 @@ static INTN utf8_to_16(const CHAR8 *stra, CHAR16 *c) {
         return len;
 }
 
-CHAR16 *stra_to_str(const CHAR8 *stra) {
+CHAR16 *xstra_to_str(const CHAR8 *stra) {
         UINTN strlen;
         UINTN len;
         UINTN i;
@@ -367,9 +367,7 @@ CHAR16 *stra_to_str(const CHAR8 *stra) {
         assert(stra);
 
         len = strlena(stra);
-        str = AllocatePool((len + 1) * sizeof(CHAR16));
-        if (!str)
-                return NULL;
+        str = xnew(CHAR16, len + 1);
 
         strlen = 0;
         i = 0;
@@ -390,7 +388,7 @@ CHAR16 *stra_to_str(const CHAR8 *stra) {
         return str;
 }
 
-CHAR16 *stra_to_path(const CHAR8 *stra) {
+CHAR16 *xstra_to_path(const CHAR8 *stra) {
         CHAR16 *str;
         UINTN strlen;
         UINTN len;
@@ -399,9 +397,7 @@ CHAR16 *stra_to_path(const CHAR8 *stra) {
         assert(stra);
 
         len = strlena(stra);
-        str = AllocatePool((len + 2) * sizeof(CHAR16));
-        if (!str)
-                return NULL;
+        str = xnew(CHAR16, len + 2);
 
         str[0] = '\\';
         strlen = 1;
index 9505d3bf214c280436a1ff5608f3d5532c98a9d5..d5f32dbb3890b6f69058b975c1c706e38147a49d 100644 (file)
@@ -68,8 +68,8 @@ EFI_STATUS efivar_get_uint64_le(const EFI_GUID *vendor, const CHAR16 *name, UINT
 EFI_STATUS efivar_get_boolean_u8(const EFI_GUID *vendor, const CHAR16 *name, BOOLEAN *ret);
 
 CHAR8 *strchra(const CHAR8 *s, CHAR8 c);
-CHAR16 *stra_to_path(const CHAR8 *stra);
-CHAR16 *stra_to_str(const CHAR8 *stra);
+CHAR16 *xstra_to_path(const CHAR8 *stra);
+CHAR16 *xstra_to_str(const CHAR8 *stra);
 
 EFI_STATUS file_read(EFI_FILE_HANDLE dir, const CHAR16 *name, UINTN off, UINTN size, CHAR8 **content, UINTN *content_size);