From 3cc285c6913de051db4e3aeb9192fd7ca82c5389 Mon Sep 17 00:00:00 2001 From: Delio Brignoli Date: Wed, 13 Mar 2013 15:21:45 +0100 Subject: [PATCH] Free peer delay responses and followup messages when sending a new peer delay request If messages are not freed, it is possible (with purposely crafted traffic) to trigger a peer delay calculation which will use message's data from the previous round. Signed-off-by: Delio Brignoli --- port.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/port.c b/port.c index 5b3bc30..2f50888 100644 --- a/port.c +++ b/port.c @@ -820,6 +820,16 @@ static int port_delay_request(struct port *p) struct ptp_message *msg; int cnt, pdulen; + /* Time to send a new request, forget current pdelay resp and fup */ + if (p->peer_delay_resp) { + msg_put(p->peer_delay_resp); + p->peer_delay_resp = NULL; + } + if (p->peer_delay_fup) { + msg_put(p->peer_delay_fup); + p->peer_delay_fup = NULL; + } + if (p->delayMechanism == DM_P2P) return port_pdelay_request(p);