aboutsummaryrefslogtreecommitdiff
path: root/libexec/bootpd
diff options
context:
space:
mode:
authorIan Dowse <iedowse@FreeBSD.org>2001-09-25 21:02:10 +0000
committerIan Dowse <iedowse@FreeBSD.org>2001-09-25 21:02:10 +0000
commit3f48bf186fb457559e2f5caf77ad6f68faa0a07f (patch)
treea04ce0be4a63acbe2c95a7c92f94e67beae260fa /libexec/bootpd
parent25107197363eae6ddfa026b308cd211196c20a1a (diff)
Notes
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 479dd3b9e055..c3a3909287ba 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 aac6263cec5b..54de708f6309 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;
}
}
}