summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorLyle Franklin <lylejfranklin@gmail.com>2022-04-16 18:36:43 +0300
committerTom Rini <trini@konsulko.com>2022-04-22 22:44:10 +0300
commit85f8e03b2a9bae37284b57ca571b7037e904c5d3 (patch)
treee66a42e9a058446c18c966e0d63a6a52889585c0 /net
parente9496ec37440ab22acf569e7ac3316732a6b8af4 (diff)
downloadu-boot-85f8e03b2a9bae37284b57ca571b7037e904c5d3.tar.xz
Allow colon in PXE bootfile URLs
- U-boot's PXE flow supports prefixing your bootfile name with an IP address to fetch from a server other than the DHCP server, e.g. `hostIPaddr:bootfilename`: https://github.com/u-boot/u-boot/commit/a93907c43f847f076dd0e34ee3b69b5e8e6d0d29 - However, this breaks bootfile paths which contain a colon, e.g. `f0:ad:4e:10:1b:87/7/pxelinux.cfg/default` - This patch checks whether the `hostIPaddr` prefix is a valid IP address before overriding the serverIP otherwise the whole bootfile path is preserved Signed-off-by: Lyle Franklin <lylejfranklin@gmail.com>
Diffstat (limited to 'net')
-rw-r--r--net/net.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/net/net.c b/net/net.c
index 072a82d8f9..034a5d6e67 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1538,14 +1538,19 @@ int is_serverip_in_cmd(void)
int net_parse_bootfile(struct in_addr *ipaddr, char *filename, int max_len)
{
char *colon;
+ struct in_addr ip;
+ ip.s_addr = 0;
if (net_boot_file_name[0] == '\0')
return 0;
colon = strchr(net_boot_file_name, ':');
if (colon) {
- if (ipaddr)
- *ipaddr = string_to_ip(net_boot_file_name);
+ ip = string_to_ip(net_boot_file_name);
+ if (ipaddr && ip.s_addr)
+ *ipaddr = ip;
+ }
+ if (ip.s_addr) {
strncpy(filename, colon + 1, max_len);
} else {
strncpy(filename, net_boot_file_name, max_len);