Skip to content

Commit 11ab0a0

Browse files
committed
rr: bound maddr URI construction
Reported-by: Haruto Kimura (Stella) (cherry picked from commit 02ca6f06492fa92d5ae7583908e84b682a0c34a3)
1 parent 7892812 commit 11ab0a0

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

modules/rr/loose.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ static inline int get_maddr_uri(str *uri, struct sip_uri *puri)
358358
{
359359
static char builturi[RH_MADDR_PARAM_MAX_LEN+1];
360360
struct sip_uri turi;
361+
int len;
361362

362363
if(uri==NULL || uri->s==NULL)
363364
return RR_ERROR;
@@ -380,6 +381,12 @@ static inline int get_maddr_uri(str *uri, struct sip_uri *puri)
380381
LM_ERR( "Too long maddr parameter\n");
381382
return RR_ERROR;
382383
}
384+
len = 4 + puri->maddr_val.len
385+
+ ((puri->port.len>0)?(1+puri->port.len):0);
386+
if( len > RH_MADDR_PARAM_MAX_LEN ) {
387+
LM_ERR( "Too long maddr URI\n");
388+
return RR_ERROR;
389+
}
383390
memcpy( builturi, "sip:", 4 );
384391
memcpy( builturi+4, puri->maddr_val.s, puri->maddr_val.len );
385392

@@ -390,8 +397,7 @@ static inline int get_maddr_uri(str *uri, struct sip_uri *puri)
390397
puri->port.len);
391398
}
392399

393-
uri->len = 4+puri->maddr_val.len
394-
+ ((puri->port.len>0)?(1+puri->port.len):0);
400+
uri->len = len;
395401
builturi[uri->len]='\0';
396402
uri->s = builturi;
397403

0 commit comments

Comments
 (0)