[OpenSER-Devel] parse_avp_spec parameters

Dan Pascu dan at ag-projects.com
Thu Nov 8 12:22:49 UTC 2007


As a note, the pv_parse_spec() function doesn't mimic this behavior (even 
though it calls parse_avp_spec at some point) which is how it should be 
behaving (this is mainly because it needs to pass only a chunk of the 
original str, so it makes a copy).

On the same note though pv_parse_avp_name() does modify its input, same as 
parse_avp_spec() since it sends its arguments in passthrough mode to the 
later function. I'm not sure if pv_parse_avp_name is meant to be used 
directly so it may not matter in its case.

On Thursday 08 November 2007, Dan Pascu wrote:
> I've noticed that the parse_avp_spec function modifies it's input. The
> first argument is the avp name that should be parsed and the output
> values for type and avp_name (2nd and 3rd arguments) should be set.
> While parsing, if the name argument points to an avp with a string
> name, the name argument is modified and later assigned to avp_name.
>
> I think this should be fixed, otherwise every caller must make a copy
> of the input name to be sure it is not modified, which is not optimal.
> Consider the case where the input name is a malloc'ed string and by
> modifying it, the reference to that memory location is lost causing
> trouble when an attempt to free it is made.
>
> Internally the function should make its own copy if a modified version
> of the input name is needed.



-- 
Dan



More information about the Devel mailing list