Module: kamailio Branch: master Commit: d00ceda2c0428c6c02f3ed6d4c8c067e3f6ae94b URL: https://github.com/kamailio/kamailio/commit/d00ceda2c0428c6c02f3ed6d4c8c067e3f6ae94b
Author: Victor Seva <[email protected]> Committer: Victor Seva <[email protected]> Date: 2023-07-13T00:12:58+02:00 rtpproxy: use memcpy instead of strcpy for coherence > https://github.com/kamailio/kamailio/security/code-scanning/2617 > https://github.com/kamailio/kamailio/security/code-scanning/2618 > https://github.com/kamailio/kamailio/security/code-scanning/2620 --- Modified: src/modules/rtpproxy/rtpproxy.c --- Diff: https://github.com/kamailio/kamailio/commit/d00ceda2c0428c6c02f3ed6d4c8c067e3f6ae94b.diff Patch: https://github.com/kamailio/kamailio/commit/d00ceda2c0428c6c02f3ed6d4c8c067e3f6ae94b.patch --- diff --git a/src/modules/rtpproxy/rtpproxy.c b/src/modules/rtpproxy/rtpproxy.c index 493d8ffdf88..8103fef4edd 100644 --- a/src/modules/rtpproxy/rtpproxy.c +++ b/src/modules/rtpproxy/rtpproxy.c @@ -1667,7 +1667,7 @@ static int set_rtp_proxy_set_f(struct sip_msg *msg, char *str1, char *str2) static int rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip) { - char *cp = NULL; + str cp = STR_NULL; char newip[IP_ADDR_MAX_STR_SIZE]; int method; int nosdp; @@ -1696,8 +1696,9 @@ static int rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip) return unforce_rtp_proxy(msg, flags); if(ip == NULL) { - cp = ip_addr2a(&msg->rcv.dst_ip); - strcpy(newip, cp); + cp.s = ip_addr2a(&msg->rcv.dst_ip); + cp.len = strlen(cp.s); + memcpy(newip, cp.s, cp.len); } if(msg->msg_flags & FL_SDP_BODY) @@ -1707,13 +1708,13 @@ static int rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip) if(msg->first_line.type == SIP_REQUEST) { if(method == METHOD_ACK && nosdp == 0) - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 0, + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, 0, (ip != NULL) ? 1 : 0); if(method == METHOD_PRACK && nosdp == 0) - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 1, + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, 1, (ip != NULL) ? 1 : 0); if(method == METHOD_UPDATE && nosdp == 0) - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 1, + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, 1, (ip != NULL) ? 1 : 0); if(method == METHOD_INVITE && nosdp == 0) { msg->msg_flags |= FL_SDP_BODY; @@ -1722,7 +1723,7 @@ static int rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip) tmb.t_gett()->uas.request->msg_flags |= FL_SDP_BODY; if(route_type == FAILURE_ROUTE) return unforce_rtp_proxy(msg, flags); - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 1, + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, 1, (ip != NULL) ? 1 : 0); } } else if(msg->first_line.type == SIP_REPLY) { @@ -1730,19 +1731,19 @@ static int rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip) return unforce_rtp_proxy(msg, flags); if(nosdp == 0) { if(method == METHOD_PRACK) - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 0, - (ip != NULL) ? 1 : 0); + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, + 0, (ip != NULL) ? 1 : 0); if(method == METHOD_UPDATE) - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 0, - (ip != NULL) ? 1 : 0); + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, + 0, (ip != NULL) ? 1 : 0); if(tmb.t_gett == NULL || tmb.t_gett() == NULL || tmb.t_gett() == T_UNDEFINED) - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 0, - (ip != NULL) ? 1 : 0); + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, + 0, (ip != NULL) ? 1 : 0); if(tmb.t_gett()->uas.request->msg_flags & FL_SDP_BODY) - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 0, - (ip != NULL) ? 1 : 0); - return force_rtp_proxy(msg, flags, (cp != NULL) ? newip : ip, 1, + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, + 0, (ip != NULL) ? 1 : 0); + return force_rtp_proxy(msg, flags, (cp.s != NULL) ? newip : ip, 1, (ip != NULL) ? 1 : 0); } } @@ -1823,15 +1824,16 @@ static int rtpproxy_offer2_f(struct sip_msg *msg, char *param1, char *param2) static int rtpproxy_answer1_helper_f(struct sip_msg *msg, char *flags) { - char *cp; + str cp = STR_NULL; char newip[IP_ADDR_MAX_STR_SIZE]; if(msg->first_line.type == SIP_REQUEST) if(msg->first_line.u.request.method_value != METHOD_ACK) return -1; - cp = ip_addr2a(&msg->rcv.dst_ip); - strcpy(newip, cp); + cp.s = ip_addr2a(&msg->rcv.dst_ip); + cp.len = strlen(cp.s); + memcpy(newip, cp.s, cp.len); return force_rtp_proxy(msg, flags, newip, 0, 0); } _______________________________________________ Kamailio (SER) - Development Mailing List To unsubscribe send an email to [email protected]
