File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments