diff --git a/main/sdp_state.c b/main/sdp_state.c
index a77d96da5d4559c6b801a203ecd6170485e490a0..2b75cc2a151f7eb7a1fcb40b0874e728682f9b56 100644
--- a/main/sdp_state.c
+++ b/main/sdp_state.c
@@ -1255,7 +1255,10 @@ static int sdp_merge_streams_match(
 					return -1;
 				}
 				idx = AST_VECTOR_GET(current_vect, current_idx);
-				ast_stream_topology_set_stream(merged_topology, idx, merged_stream);
+				if (ast_stream_topology_set_stream(merged_topology, idx, merged_stream)) {
+					ast_stream_free(merged_stream);
+					return -1;
+				}
 
 				/*
 				 * The current_stream cannot be considered a backfill_candidate
@@ -1400,7 +1403,10 @@ static struct ast_stream_topology *merge_local_topologies(
 		if (!merged_stream) {
 			goto fail;
 		}
-		ast_stream_topology_set_stream(merged_topology, idx, merged_stream);
+		if (ast_stream_topology_set_stream(merged_topology, idx, merged_stream)) {
+			ast_stream_free(merged_stream);
+			goto fail;
+		}
 	}
 
 	/* Backfill new update stream slots into pre-existing declined current stream slots */
@@ -1438,7 +1444,10 @@ static struct ast_stream_topology *merge_local_topologies(
 		}
 
 		/* Add the new stream into the backfill stream slot. */
-		ast_stream_topology_set_stream(merged_topology, current_idx, merged_stream);
+		if (ast_stream_topology_set_stream(merged_topology, current_idx, merged_stream)) {
+			ast_stream_free(merged_stream);
+			goto fail;
+		}
 		backfill_candidate[current_idx] = 0;
 	}