pluto: Properly free buffer in error cases in read_packet.

This commit is contained in:
Tobias Brunner
2011-04-14 18:10:27 +02:00
parent 3c0c321776
commit 267d47d6f2
+4 -1
View File
@@ -1142,13 +1142,14 @@ read_packet(struct msg_digest *md)
, ifp->rname , ifp->rname
, ip_str(&md->sender), (unsigned)md->sender_port)); , ip_str(&md->sender), (unsigned)md->sender_port));
} }
free(buffer);
return FALSE; return FALSE;
} }
else if (from_ugh != NULL) else if (from_ugh != NULL)
{ {
plog("recvfrom on %s returned malformed source sockaddr: %s" plog("recvfrom on %s returned malformed source sockaddr: %s"
, ifp->rname, from_ugh); , ifp->rname, from_ugh);
free(buffer);
return FALSE; return FALSE;
} }
cur_from = &md->sender; cur_from = &md->sender;
@@ -1162,6 +1163,7 @@ read_packet(struct msg_digest *md)
{ {
plog("recvfrom %s:%u too small packet (%d)" plog("recvfrom %s:%u too small packet (%d)"
, ip_str(cur_from), (unsigned) cur_from_port, packet_len); , ip_str(cur_from), (unsigned) cur_from_port, packet_len);
free(buffer);
return FALSE; return FALSE;
} }
memcpy(&non_esp, buffer, sizeof(u_int32_t)); 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" plog("recvfrom %s:%u has no Non-ESP marker"
, ip_str(cur_from), (unsigned) cur_from_port); , ip_str(cur_from), (unsigned) cur_from_port);
free(buffer);
return FALSE; return FALSE;
} }
packet_len -= sizeof(u_int32_t); packet_len -= sizeof(u_int32_t);