diff --git a/main/sdp.c b/main/sdp.c
index fd10ba8c3f550d1b2ce88b9fe36f0dd578e61aef..7e283ebf8cf43efb57ecc5ba3d9f88694a01fce7 100644
--- a/main/sdp.c
+++ b/main/sdp.c
@@ -845,6 +845,7 @@ static struct ast_stream *get_stream_from_m(const struct ast_sdp_a_lines *a_line
 			rtp_codecs_free(codecs);
 			ast_stream_free(stream);
 			ao2_ref(caps, -1);
+			ast_free(codecs);
 			return NULL;
 		}
 		ast_stream_set_data(stream, AST_STREAM_DATA_RTP_CODECS, codecs,
diff --git a/main/translate.c b/main/translate.c
index ce4745ce0e97a3d8e70d2f7331bbfa7e454f0b33..02717c5ed1ed6da989645146224bc9c937654efd 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -497,6 +497,7 @@ struct ast_trans_pvt *ast_translator_build_path(struct ast_format *dst, struct a
 			ast_log(LOG_WARNING, "No translator path from %s to %s\n",
 				ast_format_get_name(src), ast_format_get_name(dst));
 			AST_RWLIST_UNLOCK(&translators);
+			ast_translator_free_path(head);
 			return NULL;
 		}
 		if ((t->dst_codec.sample_rate == ast_format_get_sample_rate(dst)) && (t->dst_codec.type == ast_format_get_type(dst))) {
@@ -505,9 +506,7 @@ struct ast_trans_pvt *ast_translator_build_path(struct ast_format *dst, struct a
 		if (!(cur = newpvt(t, explicit_dst))) {
 			ast_log(LOG_WARNING, "Failed to build translator step from %s to %s\n",
 				ast_format_get_name(src), ast_format_get_name(dst));
-			if (head) {
-				ast_translator_free_path(head);
-			}
+			ast_translator_free_path(head);
 			AST_RWLIST_UNLOCK(&translators);
 			return NULL;
 		}
diff --git a/main/utils.c b/main/utils.c
index 931a1ae50dd47448a3afe0e24fdf68c6d20851cb..85228c183f90bdd8868b9fb94dcb95f17ea3a0d2 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -2615,7 +2615,7 @@ void ast_set_default_eid(struct ast_eid *eid)
 	unsigned char full_mac[6]  = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
 
 	s = socket(AF_INET, SOCK_STREAM, 0);
-	if (s <= 0) {
+	if (s < 0) {
 		ast_log(LOG_WARNING, "Unable to open socket for seeding global EID. "
 			"You will have to set it manually.\n");
 		return;