]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
ofnet: Initialize structs in bootpath parser
authorJulian Andres Klode <julian.klode@canonical.com>
Mon, 3 Sep 2018 08:09:15 +0000 (10:09 +0200)
committerDaniel Kiper <daniel.kiper@oracle.com>
Thu, 13 Sep 2018 09:03:05 +0000 (11:03 +0200)
Code later on checks if variables inside the struct are
0 to see if they have been set, like if there were addresses
in the bootpath.

The variables were not initialized however, so the check
might succeed with uninitialized data, and a new interface
with random addresses and the same name is added. This causes
$net_default_mac to point to the random one, so, for example,
using that variable to load per-mac config files fails.

Bug-Ubuntu: https://bugs.launchpad.net/bugs/1785859

Signed-off-by: Julian Andres Klode <julian.klode@canonical.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/net/drivers/ieee1275/ofnet.c

index 002446be1c385934762824a965806ffb75f422a0..00abc64bb2034c983ef4f50f213562c6aa36aaf7 100644 (file)
@@ -153,8 +153,8 @@ grub_ieee1275_parse_bootpath (const char *devpath, char *bootpath,
   char *comma_char = 0;
   char *equal_char = 0;
   grub_size_t field_counter = 0;
-  grub_net_network_level_address_t client_addr, gateway_addr, subnet_mask;
-  grub_net_link_level_address_t hw_addr;
+  grub_net_network_level_address_t client_addr = {}, gateway_addr = {}, subnet_mask = {};
+  grub_net_link_level_address_t hw_addr = {};
   grub_net_interface_flags_t flags = 0;
   struct grub_net_network_level_interface *inter = NULL;
   grub_uint16_t vlantag = 0;