changeset 5157:9a50ab509182 draft

DHCP: Avoid mis-aligned BOOTP structure This was caused by the recent change to pass back the frame header.
author Roy Marples <roy@marples.name>
date Mon, 20 Apr 2020 22:16:24 +0100
parents f6dc9654ac6b
children f5dbfb2af80c
files src/dhcp.c
diffstat 1 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/dhcp.c	Sun Apr 19 10:41:11 2020 +0100
+++ b/src/dhcp.c	Mon Apr 20 22:16:24 2020 +0100
@@ -3453,12 +3453,16 @@
 			}
 			break;
 		}
-		if (bytes < fl) {
-			logerrx("%s: %s: short frame header",
-			    __func__, ifp->name);
-			break;
+		if (fl != 0) {
+			if (bytes < fl) {
+				logerrx("%s: %s: short frame header",
+				    __func__, ifp->name);
+				break;
+			}
+			bytes -= fl;
+			memmove(buf, buf + fl, (size_t)bytes);
 		}
-		dhcp_packet(ifp, buf + fl, (size_t)(bytes - fl));
+		dhcp_packet(ifp, buf, (size_t)bytes);
 		/* Check we still have a state after processing. */
 		if ((state = D_STATE(ifp)) == NULL)
 			break;