diff --git a/rtp.c b/rtp.c
index 8437e432418e07f20cf54c91a9cad74ac5430849..1437c55bde4a04762e62ac9e3c12d0ccf796975d 100644
--- a/rtp.c
+++ b/rtp.c
@@ -982,10 +982,9 @@ static int rtp_socket(void)
 static struct ast_rtcp *ast_rtcp_new(void)
 {
 	struct ast_rtcp *rtcp;
-	rtcp = malloc(sizeof(struct ast_rtcp));
-	if (!rtcp)
+
+	if (!(rtcp = ast_calloc(1, sizeof(*rtcp))))
 		return NULL;
-	memset(rtcp, 0, sizeof(struct ast_rtcp));
 	rtcp->s = rtp_socket();
 	rtcp->us.sin_family = AF_INET;
 	if (rtcp->s < 0) {
@@ -993,6 +992,7 @@ static struct ast_rtcp *ast_rtcp_new(void)
 		ast_log(LOG_WARNING, "Unable to allocate socket: %s\n", strerror(errno));
 		return NULL;
 	}
+
 	return rtcp;
 }
 
@@ -1002,10 +1002,9 @@ struct ast_rtp *ast_rtp_new_with_bindaddr(struct sched_context *sched, struct io
 	int x;
 	int first;
 	int startplace;
-	rtp = malloc(sizeof(struct ast_rtp));
-	if (!rtp)
+	
+	if (!(rtp = ast_calloc(1, sizeof(*rtp))))
 		return NULL;
-	memset(rtp, 0, sizeof(struct ast_rtp));
 	rtp->them.sin_family = AF_INET;
 	rtp->us.sin_family = AF_INET;
 	rtp->s = rtp_socket();