[PATCH] net: ipv6: Fixed IPv6 string to address conversion off-by-one error

From: Ehsan Mohandesi emohandesi@microsoft.com
One extra character was being checked in the IPv6 string which caused the last character of the address to be neither '\0' nor ':'. This raises an error condition and causes the function to always return an error. This issue was resolved by this fix.
Signed-off-by: Ehsan Mohandesi emohandesi@microsoft.com --- net/tftp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/tftp.c b/net/tftp.c index c780c33..328fd90 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -837,7 +837,7 @@ void tftp_start(enum proto_t protocol) e = strchr(net_boot_file_name, ']'); len = e - s; if (s && e) { - string_to_ip6(s + 1, len, &tftp_remote_ip6); + string_to_ip6(s + 1, len - 1, &tftp_remote_ip6); strlcpy(tftp_filename, e + 2, MAX_LEN); } else { strlcpy(tftp_filename, net_boot_file_name, MAX_LEN);

On Fri, 2023-01-13 at 09:27 -0800, emohandesi@linux.microsoft.com wrote:
From: Ehsan Mohandesi emohandesi@microsoft.com
One extra character was being checked in the IPv6 string which caused the last character of the address to be neither '\0' nor ':'. This raises an error condition and causes the function to always return an error. This issue was resolved by this fix.
Signed-off-by: Ehsan Mohandesi emohandesi@microsoft.com
net/tftp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/tftp.c b/net/tftp.c index c780c33..328fd90 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -837,7 +837,7 @@ void tftp_start(enum proto_t protocol) e = strchr(net_boot_file_name, ']'); len = e - s; if (s && e) {
string_to_ip6(s + 1, len,
&tftp_remote_ip6);
string_to_ip6(s + 1, len - 1,
&tftp_remote_ip6); strlcpy(tftp_filename, e + 2, MAX_LEN); } else { strlcpy(tftp_filename, net_boot_file_name, MAX_LEN);
Reviewed-by: Viacheslav Mitrofanov v.v.mitrofanov@yadro.com

On Fri, Jan 13, 2023 at 09:27:41AM -0800, emohandesi@linux.microsoft.com wrote:
From: Ehsan Mohandesi emohandesi@microsoft.com
One extra character was being checked in the IPv6 string which caused the last character of the address to be neither '\0' nor ':'. This raises an error condition and causes the function to always return an error. This issue was resolved by this fix.
Signed-off-by: Ehsan Mohandesi emohandesi@microsoft.com Reviewed-by: Viacheslav Mitrofanov v.v.mitrofanov@yadro.com
Applied to u-boot/master, thanks!
participants (3)
-
emohandesi@linux.microsoft.com
-
Tom Rini
-
Vyacheslav V. Mitrofanov