diff options
author | tuexen <tuexen@FreeBSD.org> | 2015-01-18 20:53:20 +0000 |
---|---|---|
committer | tuexen <tuexen@FreeBSD.org> | 2015-01-18 20:53:20 +0000 |
commit | 632195efc50deb0daca7ef06d995bb2b44de680c (patch) | |
tree | debd7883d845b752d81f00f8db68d2707533f010 /sys/netinet | |
parent | 8b663cb83f547cc7b4033a7c8d8cbca1c344fe52 (diff) | |
download | FreeBSD-src-632195efc50deb0daca7ef06d995bb2b44de680c.zip FreeBSD-src-632195efc50deb0daca7ef06d995bb2b44de680c.tar.gz |
Add protection code to free memory in case of processing an address which
is neither IPv4 or IPv6.
Reported by: Coverity
CID: 749311
MFC after: 1 week
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/sctp_asconf.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/netinet/sctp_asconf.c b/sys/netinet/sctp_asconf.c index 069d453..4569900 100644 --- a/sys/netinet/sctp_asconf.c +++ b/sys/netinet/sctp_asconf.c @@ -3346,6 +3346,11 @@ sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); break; #endif + default: + SCTPDBG(SCTP_DEBUG_ASCONF1, + "sctp_asconf_send_nat_state_update: unknown address family\n"); + SCTP_FREE(aa, SCTP_M_ASC_ADDR); + return; } SCTP_MALLOC(aa, struct sctp_asconf_addr *, sizeof(*aa), SCTP_M_ASC_ADDR); @@ -3379,6 +3384,11 @@ sctp_asconf_send_nat_state_update(struct sctp_tcb *stcb, TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); break; #endif + default: + SCTPDBG(SCTP_DEBUG_ASCONF1, + "sctp_asconf_send_nat_state_update: unknown address family\n"); + SCTP_FREE(aa, SCTP_M_ASC_ADDR); + return; } /* Now we must hunt the addresses and add all global addresses */ if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) { |