[U-Boot] [PATCH] net: Fix parsing of Bootp/DHCP option 0 (Pad)

Pad has no len byte, so the normal parsing code fails.
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de --- net/bootp.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/net/bootp.c b/net/bootp.c index 9700e95..7fd29ee 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -774,6 +774,9 @@ static void dhcp_process_options(uchar *popt, struct bootp_hdr *bp) while (popt < end && *popt != 0xff) { oplen = *(popt + 1); switch (*popt) { + case 0: + oplen = -1; /* Pad omits len byte */ + break; case 1: net_copy_ip(&net_netmask, (popt + 2)); break; @@ -877,7 +880,13 @@ static int dhcp_message_type(unsigned char *popt) while (*popt != 0xff) { if (*popt == 53) /* DHCP Message Type */ return *(popt + 2); - popt += *(popt + 1) + 2; /* Scan through all options */ + if (*popt == 0) { + /* Pad */ + popt += 1; + } else { + /* Scan through all options */ + popt += *(popt + 1) + 2; + } } return -1; }

Hi Stefan,
On Fri, Aug 28, 2015 at 3:15 AM, Stefan Brüns stefan.bruens@rwth-aachen.de wrote:
Pad has no len byte, so the normal parsing code fails.
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de
Acked-by: Joe Hershberger joe.hershberger@ni.com

On Fri, Aug 28, 2015 at 3:15 AM, Stefan Brüns stefan.bruens@rwth-aachen.de wrote:
Pad has no len byte, so the normal parsing code fails.
Signed-off-by: Stefan Brüns stefan.bruens@rwth-aachen.de
Applied to u-boot-net/master, thanks! -Joe
participants (2)
-
Joe Hershberger
-
Stefan Brüns