aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2011-04-14 14:36:40 +0200
committerTobias Brunner <tobias@strongswan.org>2011-04-14 18:10:27 +0200
commit267d47d6f28f9c09997ac0ebc02db727b7361597 (patch)
tree2ef0283eb9ff92749e8afd2d6cb0cd4c0e982225 /src
parent3c0c32177636f6794b6a8ce9ad9c49b7b4b31e39 (diff)
downloadstrongswan-267d47d6f28f9c09997ac0ebc02db727b7361597.tar.bz2
strongswan-267d47d6f28f9c09997ac0ebc02db727b7361597.tar.xz
pluto: Properly free buffer in error cases in read_packet.
Diffstat (limited to 'src')
-rw-r--r--src/pluto/demux.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/pluto/demux.c b/src/pluto/demux.c
index 249e645ed..4bd037315 100644
--- a/src/pluto/demux.c
+++ b/src/pluto/demux.c
@@ -1142,13 +1142,14 @@ read_packet(struct msg_digest *md)
, ifp->rname
, ip_str(&md->sender), (unsigned)md->sender_port));
}
-
+ free(buffer);
return FALSE;
}
else if (from_ugh != NULL)
{
plog("recvfrom on %s returned malformed source sockaddr: %s"
, ifp->rname, from_ugh);
+ free(buffer);
return FALSE;
}
cur_from = &md->sender;
@@ -1162,6 +1163,7 @@ read_packet(struct msg_digest *md)
{
plog("recvfrom %s:%u too small packet (%d)"
, ip_str(cur_from), (unsigned) cur_from_port, packet_len);
+ free(buffer);
return FALSE;
}
memcpy(&non_esp, buffer, sizeof(u_int32_t));
@@ -1169,6 +1171,7 @@ read_packet(struct msg_digest *md)
{
plog("recvfrom %s:%u has no Non-ESP marker"
, ip_str(cur_from), (unsigned) cur_from_port);
+ free(buffer);
return FALSE;
}
packet_len -= sizeof(u_int32_t);