summaryrefslogtreecommitdiff
path: root/lib/efi_loader/efi_device_path_to_text.c
diff options
context:
space:
mode:
authorVincent Stehlé <vincent.stehle@arm.com>2025-03-24 09:34:43 +0100
committerIlias Apalodimas <ilias.apalodimas@linaro.org>2025-03-26 13:05:36 +0200
commit4b4d24060ef5ae99c5dca12f39433edc7ccfd741 (patch)
treec38a0339cf60148c6831c7ebf6119668c28774c2 /lib/efi_loader/efi_device_path_to_text.c
parent47f433d577a0e1e937c12bbdf632119f0c8b492e (diff)
efi_loader: fix ipv4 device path node conversion
When converting an IPv4 device path node to text, the EFI_DEVICE_PATH_TO_TEXT_PROTOCOL will produce the following string: IPv4(5.6.7.8,TCP,UDP,0x6,DHCP,1.2.3.4,9.10.11.12,255.255.255.0) This string erroneously contains multiple protocols: TCP, UDP and 0x6. Add the missing `break' statements in the dp_msging() function to fix this and obtain the following expected string instead: IPv4(5.6.7.8,TCP,DHCP,1.2.3.4,9.10.11.12,255.255.255.0) Fixes: aaf63429a112 ("efi_loader: add IPv4() to device path to text protocol") Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> Cc: Adriano Cordova <adrianox@gmail.com> Cc: Tom Rini <trini@konsulko.com> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Diffstat (limited to 'lib/efi_loader/efi_device_path_to_text.c')
-rw-r--r--lib/efi_loader/efi_device_path_to_text.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/efi_loader/efi_device_path_to_text.c b/lib/efi_loader/efi_device_path_to_text.c
index f6889cb7399..452ec1b2e8b 100644
--- a/lib/efi_loader/efi_device_path_to_text.c
+++ b/lib/efi_loader/efi_device_path_to_text.c
@@ -181,10 +181,13 @@ static char *dp_msging(char *s, struct efi_device_path *dp)
switch (idp->protocol) {
case IPPROTO_TCP:
s += sprintf(s, "TCP,");
+ break;
case IPPROTO_UDP:
s += sprintf(s, "UDP,");
+ break;
default:
s += sprintf(s, "0x%x,", idp->protocol);
+ break;
}
s += sprintf(s, idp->static_ip_address ? "Static" : "DHCP");
s += sprintf(s, ",%pI4", &idp->local_ip_address);