From fa3826a1d30e7f194f02de8e0ede62494cc5cc59 Mon Sep 17 00:00:00 2001 From: Sylvain Rochet Date: Fri, 31 Aug 2018 10:12:50 +0200 Subject: [PATCH] PPP: improve randomization of LCP magic number after power-up magic_init() is first time called from ppp_init(), which is called from lwip_init(). If system has no RTC, sys_jiffies() returns same value in this moment after every power-up or system reset. This value used in LCP magic number generation after ppp_connect(), which leads to same magic number after every restart. Subsequent magic_randomize() calls takes place in ppp_input(), after magic number generation. Call magic_randomize() somewhere near start of ppp_connect() (and ppp_listen()) as it might be called later at a random time. Signed-off-by: Sylvain Rochet --- src/netif/ppp/ppp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/netif/ppp/ppp.c b/src/netif/ppp/ppp.c index 3526c3ce..a9c18e30 100644 --- a/src/netif/ppp/ppp.c +++ b/src/netif/ppp/ppp.c @@ -276,6 +276,8 @@ err_t ppp_connect(ppp_pcb *pcb, u16_t holdoff) { PPPDEBUG(LOG_DEBUG, ("ppp_connect[%d]: holdoff=%d\n", pcb->netif->num, holdoff)); + magic_randomize(); + if (holdoff == 0) { ppp_do_connect(pcb); return ERR_OK; @@ -303,6 +305,8 @@ err_t ppp_listen(ppp_pcb *pcb) { PPPDEBUG(LOG_DEBUG, ("ppp_listen[%d]\n", pcb->netif->num)); + magic_randomize(); + if (pcb->link_cb->listen) { new_phase(pcb, PPP_PHASE_INITIALIZE); pcb->link_cb->listen(pcb, pcb->link_ctx_cb);