Skip to content

Commit

Permalink
core: test if ipv6 address starts with [ for subst snd lumps
Browse files Browse the repository at this point in the history
- safer than the test against cached socket address known to be without
[], allowing to pass any address value to be used
- reported by GH #1315

(cherry picked from commit 2cb94f2)
  • Loading branch information
miconda committed Nov 21, 2017
1 parent 705fc77 commit 69fb3b9
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions src/core/msg_translator.c
Expand Up @@ -678,8 +678,8 @@ static inline int lumps_len(struct sip_msg* msg, struct lump* lumps,
case SUBST_SND_IP: \
if (send_sock){ \
new_len+=send_address_str->len; \
if (send_sock->address.af!=AF_INET && \
send_address_str==&(send_sock->address_str)) \
if (send_sock->address.af==AF_INET6 && \
send_address_str->s[0]!='[') \
new_len+=2; \
}else{ \
LM_CRIT("FIXME: null send_sock\n"); \
Expand Down Expand Up @@ -724,8 +724,8 @@ static inline int lumps_len(struct sip_msg* msg, struct lump* lumps,
case SUBST_SND_ALL: \
if (send_sock){ \
new_len+=send_address_str->len; \
if ((send_sock->address.af!=AF_INET) && \
(send_address_str==&(send_sock->address_str))) \
if ((send_sock->address.af==AF_INET6) && \
(send_address_str->s[0]!='[')) \
new_len+=2; \
if ((send_sock->port_no!=SIP_PORT) || \
(send_port_str!=&(send_sock->port_no_str))){ \
Expand Down Expand Up @@ -766,7 +766,7 @@ static inline int lumps_len(struct sip_msg* msg, struct lump* lumps,
default: \
LM_CRIT("unknown subst type %d\n", (subst_l)->u.subst); \
}

if (send_info){
send_sock=send_info->send_sock;
}else{
Expand Down Expand Up @@ -935,7 +935,7 @@ void process_lumps( struct sip_msg* msg,
default:\
LM_CRIT("unknown comp %d\n", msg->rcv.comp); \
}

#define SENDCOMP_PARAM_ADD \
/* add ;comp=xxxx */ \
switch(send_info->comp){ \
Expand All @@ -956,7 +956,7 @@ void process_lumps( struct sip_msg* msg,
break;\
default:\
LM_CRIT("unknown comp %d\n", msg->rcv.comp); \
}
}
#else
#define RCVCOMP_PARAM_ADD
#define SENDCOMP_PARAM_ADD
Expand Down Expand Up @@ -1057,14 +1057,14 @@ void process_lumps( struct sip_msg* msg,
case SUBST_SND_IP: \
if (send_sock){ \
if ((send_sock->address.af!=AF_INET) && \
(send_address_str==&(send_sock->address_str))){\
(send_address_str->s[0]!='[')){\
new_buf[offset]='['; offset++; \
}\
memcpy(new_buf+offset, send_address_str->s, \
send_address_str->len); \
offset+=send_address_str->len; \
if ((send_sock->address.af!=AF_INET) && \
(send_address_str==&(send_sock->address_str))){\
(send_address_str->s[0]!='[')){\
new_buf[offset]=']'; offset++; \
}\
}else{ \
Expand All @@ -1086,14 +1086,14 @@ void process_lumps( struct sip_msg* msg,
if (send_sock){ \
/* address */ \
if ((send_sock->address.af!=AF_INET) && \
(send_address_str==&(send_sock->address_str))){\
(send_address_str->s[0]!='[')){\
new_buf[offset]='['; offset++; \
}\
memcpy(new_buf+offset, send_address_str->s, \
send_address_str->len); \
offset+=send_address_str->len; \
if ((send_sock->address.af!=AF_INET) && \
(send_address_str==&(send_sock->address_str))){\
(send_address_str->s[0]!='[')){\
new_buf[offset]=']'; offset++; \
}\
/* :port */ \
Expand Down

0 comments on commit 69fb3b9

Please sign in to comment.