Skip to content

Commit

Permalink
core: check for non empty receive address and port in msg translator
Browse files Browse the repository at this point in the history
  • Loading branch information
miconda committed Apr 7, 2021
1 parent e858337 commit 7ef0a27
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/core/msg_translator.c
Expand Up @@ -597,7 +597,7 @@ static inline int lumps_len(struct sip_msg* msg, struct lump* lumps,
#define SUBST_LUMP_LEN(subst_l) \
switch((subst_l)->u.subst){ \
case SUBST_RCV_IP: \
if (msg->rcv.bind_address){ \
if (msg->rcv.bind_address && STR_WITHVAL(recv_address_str)){ \
new_len+=recv_address_str->len; \
if (msg->rcv.bind_address->address.af!=AF_INET) \
new_len+=2; \
Expand All @@ -607,7 +607,7 @@ static inline int lumps_len(struct sip_msg* msg, struct lump* lumps,
}; \
break; \
case SUBST_RCV_PORT: \
if (msg->rcv.bind_address){ \
if (msg->rcv.bind_address && STR_WITHVAL(recv_port_str)){ \
new_len+=recv_port_str->len; \
}else{ \
/* FIXME */ \
Expand Down Expand Up @@ -646,14 +646,14 @@ static inline int lumps_len(struct sip_msg* msg, struct lump* lumps,
break; \
case SUBST_RCV_ALL: \
case SUBST_RCV_ALL_EX: \
if (msg->rcv.bind_address){ \
if (msg->rcv.bind_address && STR_WITHVAL(recv_address_str)){ \
new_len+=recv_address_str->len; \
if ((msg->rcv.bind_address->address.af==AF_INET6)\
&& (recv_address_str->s[0]!='[')\
&& (memchr(recv_address_str->s, ':',\
recv_address_str->len)!=NULL))\
new_len+=2; \
if (recv_port_no!=SIP_PORT){ \
if (recv_port_no!=SIP_PORT && STR_WITHVAL(recv_port_str)){ \
/* add :port_no */ \
new_len+=1+recv_port_str->len; \
}\
Expand Down Expand Up @@ -990,7 +990,7 @@ void process_lumps( struct sip_msg* msg,
#define SUBST_LUMP(subst_l) \
switch((subst_l)->u.subst){ \
case SUBST_RCV_IP: \
if (msg->rcv.bind_address){ \
if (msg->rcv.bind_address && STR_WITHVAL(recv_address_str)){ \
if (msg->rcv.bind_address->address.af!=AF_INET){\
new_buf[offset]='['; offset++; \
}\
Expand All @@ -1006,7 +1006,7 @@ void process_lumps( struct sip_msg* msg,
}; \
break; \
case SUBST_RCV_PORT: \
if (msg->rcv.bind_address){ \
if (msg->rcv.bind_address && STR_WITHVAL(recv_port_str)){ \
memcpy(new_buf+offset, recv_port_str->s, \
recv_port_str->len); \
offset+=recv_port_str->len; \
Expand All @@ -1017,7 +1017,7 @@ void process_lumps( struct sip_msg* msg,
break; \
case SUBST_RCV_ALL: \
case SUBST_RCV_ALL_EX: \
if (msg->rcv.bind_address){ \
if (msg->rcv.bind_address && STR_WITHVAL(recv_address_str)){ \
/* address */ \
if ((msg->rcv.bind_address->address.af==AF_INET6)\
&& (recv_address_str->s[0]!='[')\
Expand All @@ -1035,7 +1035,7 @@ void process_lumps( struct sip_msg* msg,
new_buf[offset]=']'; offset++; \
}\
/* :port */ \
if (recv_port_no!=SIP_PORT){ \
if (recv_port_no!=SIP_PORT && STR_WITHVAL(recv_port_str)){ \
new_buf[offset]=':'; offset++; \
memcpy(new_buf+offset, \
recv_port_str->s, \
Expand Down
5 changes: 5 additions & 0 deletions src/core/str.h
Expand Up @@ -142,6 +142,11 @@ typedef struct _str str;
} \
} while(0)

/**
* str with value: not null and not emptu
*/
#define STR_WITHVAL(_sp) ((_sp) && ((_sp)->s) && ((_sp)->len))

/** @} */

/** Appends a sufffix
Expand Down

0 comments on commit 7ef0a27

Please sign in to comment.