diff options
author | achillelamb <achille.lambrughi98@gmail.com> | 2024-10-04 16:32:00 +0200 |
---|---|---|
committer | achillelamb <achille.lambrughi98@gmail.com> | 2024-10-04 16:32:06 +0200 |
commit | c08fbb86648b2c1c131df5066b6352cf96e245fb (patch) | |
tree | d3bc9d6bd92caa050a4d1554ec997f3e39671327 /accel-pppd | |
parent | ba4a8e9b79b7c5189f40d808bb5882affdf83653 (diff) | |
download | accel-ppp-c08fbb86648b2c1c131df5066b6352cf96e245fb.tar.gz accel-ppp-c08fbb86648b2c1c131df5066b6352cf96e245fb.zip |
fix(ppp_lcp): truncate echo reply if size > client MRU
Fix issue #204
Proposed by https://github.com/achillelamb
Diffstat (limited to 'accel-pppd')
-rw-r--r-- | accel-pppd/ppp/ppp_lcp.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/accel-pppd/ppp/ppp_lcp.c b/accel-pppd/ppp/ppp_lcp.c index 10babec8..c5f9f2de 100644 --- a/accel-pppd/ppp/ppp_lcp.c +++ b/accel-pppd/ppp/ppp_lcp.c @@ -16,6 +16,10 @@ #include "memdebug.h" +#ifndef min +#define min(x,y) ((x)<(y)?(x):(y)) +#endif + struct recv_opt_t { struct list_head entry; @@ -615,7 +619,7 @@ static void send_echo_reply(struct ppp_lcp_t *lcp) if (conf_ppp_verbose) log_ppp_debug("send [LCP EchoRep id=%x <magic %08x>]\n", hdr->id, lcp->magic); - ppp_chan_send(lcp->ppp, hdr, ntohs(hdr->len) + 2); + ppp_chan_send(lcp->ppp, hdr, min(ntohs(hdr->len), lcp->ppp->mtu) + 2); } static void send_echo_request(struct triton_timer_t *t) |