You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
|
From: Mark Salter <msalter@redhat.com> |
|
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 <msalter@redhat.com> |
|
--- |
|
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 6b4b10ba444..a6566bdb00a 100644 |
|
--- a/grub-core/net/net.c |
|
+++ b/grub-core/net/net.c |
|
@@ -784,6 +784,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) |
|
{ |
|
@@ -792,9 +793,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); |
|
} |
|
}
|
|
|