From 8db634d2d9892dba755897b81befc54f7d0d0a2f Mon Sep 17 00:00:00 2001 From: Jeremy Lakeman Date: Mon, 12 May 2014 13:42:41 +0930 Subject: [PATCH] Don't process MDP packets if the local address is invalid --- overlay_mdp.c | 2 ++ socket.c | 1 + 2 files changed, 3 insertions(+) diff --git a/overlay_mdp.c b/overlay_mdp.c index 479a8eda..ef90d4a5 100644 --- a/overlay_mdp.c +++ b/overlay_mdp.c @@ -1347,6 +1347,7 @@ static void mdp_process_packet(struct socket_address *client, struct mdp_header if (!internal_header.source || internal_header.source->reachable != REACHABLE_SELF){ mdp_reply_error(client, header); WHY("Subscriber is not local"); + return; } } @@ -1354,6 +1355,7 @@ static void mdp_process_packet(struct socket_address *client, struct mdp_header // assign the next available port number if (header->local.port==0 && header->flags & MDP_FLAG_BIND){ + // TODO check if the port is already bound if (next_port_binding > 32*1024) next_port_binding=256; else diff --git a/socket.c b/socket.c index df98158a..a7f5d6d8 100644 --- a/socket.c +++ b/socket.c @@ -23,6 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include #include "serval.h" +#include "str.h" #include "conf.h" #include "log.h" #include "strbuf_helpers.h"