summaryrefslogtreecommitdiffstats
path: root/libexec/bootpd
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/bootpd')
-rw-r--r--libexec/bootpd/bootp.h2
-rw-r--r--libexec/bootpd/bootpd.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/libexec/bootpd/bootp.h b/libexec/bootpd/bootp.h
index 479dd3b..c3a3909 100644
--- a/libexec/bootpd/bootp.h
+++ b/libexec/bootpd/bootp.h
@@ -38,6 +38,8 @@ SOFTWARE.
#define BP_FILE_LEN 128
#define BP_VEND_LEN 64
#define BP_MINPKTSZ 300 /* to check sizeof(struct bootp) */
+/* Overhead to fit a bootp message into an Ethernet packet. */
+#define BP_MSG_OVERHEAD (14 + 20 + 8) /* Ethernet + IP + UDP headers */
struct bootp {
unsigned char bp_op; /* packet opcode type */
diff --git a/libexec/bootpd/bootpd.c b/libexec/bootpd/bootpd.c
index aac6263..54de708 100644
--- a/libexec/bootpd/bootpd.c
+++ b/libexec/bootpd/bootpd.c
@@ -1292,10 +1292,10 @@ dovend_rfc1048(bp, hp, bootsize)
p += len;
}
- if (msgsz > sizeof(*bp)) {
+ if (msgsz > sizeof(*bp) + BP_MSG_OVERHEAD) {
if (debug > 1)
report(LOG_INFO, "request has DHCP msglen=%d", msgsz);
- pktlen = msgsz;
+ pktlen = msgsz - BP_MSG_OVERHEAD;
}
}
}
OpenPOWER on IntegriCloud