[asterisk-dev] [Code Review] Fix handling of backreferences for ENUM lookups
Russell Bryant
russell at digium.com
Thu Mar 5 17:12:34 CST 2009
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.digium.com/r/187/#review529
-----------------------------------------------------------
Ship it!
Other than one last tiny thing, this looks good to me.
Nice work, Batman!
/trunk/main/enum.c
<http://reviewboard.digium.com/r/187/#comment1249>
size_t instead of int
- Russell
On 2009-03-05 17:09:29, David Vossel wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.digium.com/r/187/
> -----------------------------------------------------------
>
> (Updated 2009-03-05 17:09:29)
>
>
> Review request for Asterisk Developers, Russell Bryant and Mark Michelson.
>
>
> Summary
> -------
>
> enum.c did not handle regex backtraces correctly.
>
> for example:
> input: +44800123123
> regex: !^\+44800(.*)$!sip:44800\1 at selfnet.at!
>
> ^\+44800(.*)$ matches to 123123
>
> The '\1' in the regex is a backtrace that requires a pattern match to be inserted. The way the code used to work is that it would find the backtrace and insert the entire input string minus the '+'. This is ghetto... The regexec() function takes in a variable called pmatch which is an array of structs containing the start and end indexes for each backtrace substring. The original code actually passed the pmatch array pointer into regexec but never did anything with it. Now when a backtrace is found, the backtrace number is looked up in the pmatch array and the correct substring is inserted.
>
> the result was: sip:44804480123123 at selfnet.at because 4480123123 was being inserted into the backtrace instead of the correct match, 123123
>
> the new result is sip:4480123123 at selfnet.at
>
> http://tools.ietf.org/html/rfc3403 discusses some of this.
>
>
> Diffs
> -----
>
> /trunk/main/enum.c 180005
>
> Diff: http://reviewboard.digium.com/r/187/diff
>
>
> Testing
> -------
>
>
> Thanks,
>
> David
>
>
More information about the asterisk-dev
mailing list