From 65a358727c296e2fd9d2bd37afce41089feb664e Mon Sep 17 00:00:00 2001 From: Marc Soda Date: Fri, 8 May 2015 14:48:15 -0400 Subject: [PATCH] Use the proper ROC when encrypting. --- kernel-module/xt_RTPENGINE.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/kernel-module/xt_RTPENGINE.c b/kernel-module/xt_RTPENGINE.c index 713c34997..c203eb838 100644 --- a/kernel-module/xt_RTPENGINE.c +++ b/kernel-module/xt_RTPENGINE.c @@ -2264,11 +2264,19 @@ src_check_ok: rtp_pt_idx = rtp_payload_type(rtp.header, &g->target); - pkt_idx_u = pkt_idx = packet_index(&g->decrypt, &g->target.decrypt, rtp.header); - if (srtp_auth_validate(&g->decrypt, &g->target.decrypt, &rtp, &pkt_idx)) - goto skip_error; - if (pkt_idx != pkt_idx_u) - update_packet_index(&g->decrypt, &g->target.decrypt, pkt_idx); + if ((&g->decrypt)->cipher->decrypt) { + pkt_idx_u = pkt_idx = packet_index(&g->decrypt, &g->target.decrypt, rtp.header); + if (srtp_auth_validate(&g->decrypt, &g->target.decrypt, &rtp, &pkt_idx)) + goto skip_error; + if (pkt_idx != pkt_idx_u) + update_packet_index(&g->decrypt, &g->target.decrypt, pkt_idx); + } else { + pkt_idx_u = pkt_idx = packet_index(&g->encrypt, &g->target.encrypt, rtp.header); + + if (pkt_idx != pkt_idx_u) + update_packet_index(&g->encrypt, &g->target.encrypt, pkt_idx); + } + if (srtp_decrypt(&g->decrypt, &g->target.decrypt, &rtp, pkt_idx)) goto skip_error;