From bee319bf9413f2584bcda288fb3d76935f50cc13 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 19 Dec 2019 11:27:10 +0100 Subject: [PATCH] dhcp: nettools: fix parsing of classless routes option Fixes: 6adade6f21d5 ('dhcp: add nettools dhcp4 client') (cherry picked from commit dd3114deb04184b38da6a9bd2d1e602985380c55) --- src/dhcp/nm-dhcp-nettools.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dhcp/nm-dhcp-nettools.c b/src/dhcp/nm-dhcp-nettools.c index 1287ca23ab..9a4c3e16b8 100644 --- a/src/dhcp/nm-dhcp-nettools.c +++ b/src/dhcp/nm-dhcp-nettools.c @@ -128,6 +128,7 @@ lease_option_next_route (struct in_addr *destp, uint8_t *data = *datap; size_t n_data = *n_datap; uint8_t plen; + uint8_t bytes; if (classless) { if (!lease_option_consume (&plen, sizeof (plen), &data, &n_data)) @@ -136,7 +137,9 @@ lease_option_next_route (struct in_addr *destp, if (plen > 32) return FALSE; - if (!lease_option_consume (&dest, plen / 8, &data, &n_data)) + bytes = plen == 0 ? 0 : ((plen - 1) / 8) + 1; + + if (!lease_option_consume (&dest, bytes, &data, &n_data)) return FALSE; } else { if (!lease_option_next_in_addr (&dest, &data, &n_data))