From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Mark Salter Date: Tue, 22 Aug 2017 12:21:12 -0400 Subject: [PATCH] Fix grub_net_hwaddr_to_str commit 5c3b78c92f8 introduced support for larger network hw addresses. However, grub_net_hwaddr_to_str() relies on GRUB_NET_MAX_STR_ADDRESS_SIZE to prevent a spurious ':' at the end of the string. So now, if actual hwaddr size is less than max, an extra ':' appears at the end of the string. So calculate max string size based on actual hwaddr length to fix the problem. Signed-off-by: Mark Salter --- grub-core/net/net.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/grub-core/net/net.c b/grub-core/net/net.c index a0f4d00f0be..191e8e41bd6 100644 --- a/grub-core/net/net.c +++ b/grub-core/net/net.c @@ -770,6 +770,7 @@ grub_net_hwaddr_to_str (const grub_net_link_level_address_t *addr, char *str) { char *ptr; unsigned i; + int maxstr; if (addr->len > GRUB_NET_MAX_LINK_ADDRESS_SIZE) { @@ -778,9 +779,10 @@ grub_net_hwaddr_to_str (const grub_net_link_level_address_t *addr, char *str) addr->type, addr->len); return; } + maxstr = addr->len * grub_strlen ("XX:"); for (ptr = str, i = 0; i < addr->len; i++) { - ptr += grub_snprintf (ptr, GRUB_NET_MAX_STR_HWADDR_LEN - (ptr - str), + ptr += grub_snprintf (ptr, maxstr - (ptr - str), "%02x:", addr->mac[i] & 0xff); } }