From 908d5d0f397be3e484d7618fb007468fb9a24a6a Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 24 Apr 2026 09:27:07 -0400 Subject: [PATCH] MT#55283 move check for destinations Don't check destination indexes if the non-forwarding flag is set, as everything would be zero NGCP-Flow: mr14.1 Change-Id: Ieedf8009c1a9670aba4c57ee988c0dead18a79f1 --- kernel-module/nft_rtpengine.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/kernel-module/nft_rtpengine.c b/kernel-module/nft_rtpengine.c index 8d54fe471..e2bf71d04 100644 --- a/kernel-module/nft_rtpengine.c +++ b/kernel-module/nft_rtpengine.c @@ -2481,25 +2481,26 @@ static int table_new_target(struct rtpengine_table *t, struct rtpengine_target_i return -EINVAL; if (i->num_destinations > RTPE_MAX_FORWARD_DESTINATIONS) return -EINVAL; - for (u = 0; u < RTPE_NUM_OUTPUT_MEDIA; u++) { - if (i->media_output_idxs[u].rtp_start_idx >= i->num_destinations) - return -EINVAL; - if (i->media_output_idxs[u].rtp_end_idx > i->num_destinations) - return -EINVAL; - if (i->media_output_idxs[u].rtp_end_idx < i->media_output_idxs[u].rtp_start_idx) - return -EINVAL; - if (i->media_output_idxs[u].rtcp_start_idx >= i->num_destinations) - return -EINVAL; - if (i->media_output_idxs[u].rtcp_end_idx > i->num_destinations) - return -EINVAL; - if (i->media_output_idxs[u].rtcp_end_idx < i->media_output_idxs[u].rtcp_start_idx) - return -EINVAL; - } if (i->num_payload_types > RTPE_NUM_PAYLOAD_TYPES) return -EINVAL; if (!i->non_forwarding) { if (!i->num_destinations) return -EINVAL; + for (u = 0; u < RTPE_NUM_OUTPUT_MEDIA; u++) { + printk(KERN_ERR "XXX %d %d\n", __LINE__, i->media_output_idxs[u].rtp_start_idx); + if (i->media_output_idxs[u].rtp_start_idx >= i->num_destinations) + return -EINVAL; + if (i->media_output_idxs[u].rtp_end_idx > i->num_destinations) + return -EINVAL; + if (i->media_output_idxs[u].rtp_end_idx < i->media_output_idxs[u].rtp_start_idx) + return -EINVAL; + if (i->media_output_idxs[u].rtcp_start_idx >= i->num_destinations) + return -EINVAL; + if (i->media_output_idxs[u].rtcp_end_idx > i->num_destinations) + return -EINVAL; + if (i->media_output_idxs[u].rtcp_end_idx < i->media_output_idxs[u].rtcp_start_idx) + return -EINVAL; + } } else { if (i->num_destinations)