[U-Boot] [RFC PATCH v2 03/11] lib: net_utils: make string_to_ip stricter
Joe Hershberger
joe.hershberger at gmail.com
Tue Nov 24 02:06:07 CET 2015
On Mon, Nov 9, 2015 at 1:38 AM, Chris Packham <judge.packham at gmail.com> wrote:
> Previously values greater than 255 were implicitly truncated. Add some
> stricter checking to reject addresses with components >255.
>
> With the input "1234192.168.1.1" the old behaviour would truncate the
> address to 192.168.1.1. New behaviour rejects the string outright and
> returns 0.0.0.0, which for the purposes of IP addresses can be
> considered an error.
>
> Signed-off-by: Chris Packham <judge.packham at gmail.com>
> ---
>
> Changes in v2:
> - restore some lazy parsing behavior that the tftpboot command relied on.
It would be good to explicitly describe (in the change log) what you
had to change about your stricter parsing that tftpboot required. It
seems your commit log didn't change.
> lib/net_utils.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/lib/net_utils.c b/lib/net_utils.c
> index cfae842..f148b8a 100644
> --- a/lib/net_utils.c
> +++ b/lib/net_utils.c
> @@ -24,11 +24,16 @@ struct in_addr string_to_ip(const char *s)
>
> for (addr.s_addr = 0, i = 0; i < 4; ++i) {
> ulong val = s ? simple_strtoul(s, &e, 10) : 0;
> + if (val > 255) {
> + addr.s_addr = 0;
> + return addr;
> + }
> addr.s_addr <<= 8;
> addr.s_addr |= (val & 0xFF);
> - if (s) {
> - s = (*e) ? e+1 : e;
> - }
> + if (*e == '.')
> + s = e + 1;
> + else
> + break;
> }
>
> addr.s_addr = htonl(addr.s_addr);
> --
> 2.5.3
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
More information about the U-Boot
mailing list