[sr-dev] Segfault in current kamailio/pv module

Daniel-Constantin Mierla miconda at gmail.com
Tue Jan 8 19:41:38 CET 2013


Hello,

I would probably replace the constant "" with a pointer to a buffer and 
set length to 0 (either a static buffer or one from the pv modue/api 
where the values are stored for transformations or evaluation of the 
dynamic strings).

That because I expect many places where there is a backup of the next to 
last character, then set to 0 for some 0-termnated string operations 
(like regexp match) and then restore. That should be safe anywhere, as 
non zero terminated values point inside the sip message buffers, 
otherwise the std lib string values are null terminated, thus a backup 
and restore of 0.

The other solution would require to revise the code and check for 
length, even so might not be safe always...

Cheers,
Daniel

On 1/8/13 7:26 PM, Richard Fuchs wrote:
> Hi all, Daniel,
>
> We've identified a subtle segfault condition in pv module, caused by:
>
> 1) tr_eval_string() setting val->rs.s to a constant and read-only ""
> (empty string) under certain circumstances in two locations (pv_trans.c
> lines 387 and 409),
>
> followed by
>
> 2) pv_set_ruri() and others then trying to write to val->rs.s (e.g.
> pv_core.c line 1823).
>
> This results in segfault due to modification of read-only memory.
> However I'm unsure about the fix: If val->rs.s is allowed to be
> read-only, then there should be made no attempts to modify it, or
> otherwise if val->rs.s is assumed to be always writable, then the
> constant empty string assignment must be removed.
>
> I'll take care of committing the fix once I know which one of the two
> choices is the right one.
>
> cheers
>
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20130108/90ae91ff/attachment.htm>


More information about the sr-dev mailing list