diff options
author | Lyle Franklin <lylejfranklin@gmail.com> | 2022-04-16 11:36:43 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-04-22 15:44:10 -0400 |
commit | 85f8e03b2a9bae37284b57ca571b7037e904c5d3 (patch) | |
tree | e66a42e9a058446c18c966e0d63a6a52889585c0 /net/net.c | |
parent | e9496ec37440ab22acf569e7ac3316732a6b8af4 (diff) | |
download | u-boot-85f8e03b2a9bae37284b57ca571b7037e904c5d3.zip u-boot-85f8e03b2a9bae37284b57ca571b7037e904c5d3.tar.gz u-boot-85f8e03b2a9bae37284b57ca571b7037e904c5d3.tar.bz2 |
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/net.c')
-rw-r--r-- | net/net.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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); |