summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_asconf.c
diff options
context:
space:
mode:
authortuexen <tuexen@FreeBSD.org>2015-01-18 20:53:20 +0000
committertuexen <tuexen@FreeBSD.org>2015-01-18 20:53:20 +0000
commit632195efc50deb0daca7ef06d995bb2b44de680c (patch)
treedebd7883d845b752d81f00f8db68d2707533f010 /sys/netinet/sctp_asconf.c
parent8b663cb83f547cc7b4033a7c8d8cbca1c344fe52 (diff)
downloadFreeBSD-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/sctp_asconf.c')
-rw-r--r--sys/netinet/sctp_asconf.c10
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) {
OpenPOWER on IntegriCloud