Message ID | CAAuZUxmfKRrcCyZyb7zM3uoZftcAxUZ3CtZ+8qQ5-D0zq9E4qg@mail.gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Ramon Fried |
Headers | show |
Series | Allow colon in PXE bootfile URLs | expand |
On Sun, Aug 15, 2021 at 5:09 PM Lyle Franklin <lylejfranklin@gmail.com> wrote: > > From: Lyle Franklin <lylejfranklin@gmail.com> > Date: Sun, 15 Aug 2021 07:17:14 -0400 > Subject: [PATCH] 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> > --- > net/net.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/net/net.c b/net/net.c > index c2992a0908..30fc0a29d7 100644 > --- a/net/net.c > +++ b/net/net.c > @@ -1540,14 +1540,18 @@ 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; > > 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); > -- > 2.31.1 Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
On Tue, Sep 14, 2021 at 12:13 PM Ramon Fried <rfried.dev@gmail.com> wrote: > > On Sun, Aug 15, 2021 at 5:09 PM Lyle Franklin <lylejfranklin@gmail.com> wrote: > > > > From: Lyle Franklin <lylejfranklin@gmail.com> > > Date: Sun, 15 Aug 2021 07:17:14 -0400 > > Subject: [PATCH] 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> > > --- > > net/net.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/net/net.c b/net/net.c > > index c2992a0908..30fc0a29d7 100644 > > --- a/net/net.c > > +++ b/net/net.c > > @@ -1540,14 +1540,18 @@ 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; > > > > 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); > > -- > > 2.31.1 > Reviewed-by: Ramon Fried <rfried.dev@gmail.com> Patch doesn't apply, please rebase and resend. Additionally, it looks like there is wrong indentation, please check patch with checkpatch before resubmitting Thanks, Ramon
diff --git a/net/net.c b/net/net.c index c2992a0908..30fc0a29d7 100644 --- a/net/net.c +++ b/net/net.c @@ -1540,14 +1540,18 @@ 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; 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);