[SR-Users] Regex module having trouble with large regex expressions in kamailio 4.4.5

Daniel-Constantin Mierla daniel at kamailio.org
Thu Mar 23 19:09:07 CET 2017


Hello,

looking quickly at the code, I see that there is a define of 500 limit for each line loaded from the file, probably it is what the developer considered to be enough for a regexp. I haven't gone further checking, as I am out of the office, but I guess it just truncates the longer lines to the limit.

So it would require a patch to extend that.

Cheers,
Daniel

March 23, 2017 9:05 AM, "Tim Balmer" <t.balmer at edutel.nl> wrote:

> Hi,
> 
> I discovered some strange behavior from the regex module yesterday (kamailio version 4.4.5). 
> 
> For example we have the phone number 0033755500381 that we try to match with the following kamailio
> code:
> 
> #!define REGEX_FF_NEG_INTERNATIONAL "6"
> ...
> if (pcre_match_group("$rU", REGEX_FF_NEG_INTERNATIONAL))
> {
> # Do something
> }
> 
> When the content of our regex groups file is like this:
> 
> [6]
> ^(\+|00)3(0690|0693|0694|0695|0697|0698|0699|36|37|4160|46|47|51160|511691|511693|511696|511891|5118
> 3|511896|513|516091|5160921|516093|516096|516391|516392|516393|516396|516591|516592|516593|516596|51
> 691|5166921|516693|516696|5191|5192|5193|5196|538|54388|543
> 89|546|5475|5477|548|567117|5672|5677|5679|5692|5694|5696|5698|5699|5795|5796|5797|5799|58299|584|58
> 0|5948|5987|5988|5989|59988|59989|620|630|631|670|706|712|725|728|774|776|8591|8592|8595|8597|8598|8
> 99|8620|8621|8630|8631|8640|8641|8643|8649|8650|8651|8660| 8661|8664|8670|8671|869814|906698|93)
> 
> The above if statment is not matching, although it should match according to any regex validator
> (for example https://regex101.com )
> 
> But when I split the above regex in smaller parts, like this:
> 
> [6]
> ^(\+|00)306(90|93|94|95|97|98|99)
> ^(\+|00)336
> ^(\+|00)337
> ^(\+|00)34160
> ^(\+|00)346
> ^(\+|00)347
> ^(\+|00)351(160|1691|1693|1696|1891|1893|1896|3|6091|60921|6093|6096|6391|6392|6393|6396|6591|6592|6
> 93|6596|6691|66921|6693|6696|91|92|93|96)
> ^(\+|00)3538
> ^(\+|00)354(388|389|6|75|77|8)
> ^(\+|00)356(7117|72|77|79|92|94|96|98|99)
> ^(\+|00)357(95|96|97|99)
> ^(\+|00)358(299|4|50)
> ^(\+|00)359(48|87|88|89|988|989)
> ^(\+|00)3620
> ^(\+|00)363(0|1)
> ^(\+|00)3670
> ^(\+|00)3706
> ^(\+|00)3712
> ^(\+|00)372(5|8)
> ^(\+|00)377(4|6)
> ^(\+|00)385(91|92|95|97|98|99)
> ^(\+|00)386(20|21|30|31|40|41|43|49|50|51|60|61|64|70|71|9814)
> ^(\+|00)3906698
> ^(\+|00)393
> 
> Then the exact same regex module call as before does result in a match as expected.
> 
> So to me it looks like the regex module is having trouble with large regex expressions, I did check
> the logs but there is nothing strange there, that means also the large expression is correctly
> loaded according to the logs while in fact it is not working. Checked the regex module
> documentation but there I cannot find any limits regarding to the size of invididual expressions. 
> 
> Is it me missing something or did I discover a bug in de regex module?
> 
> Best Regards,
> 
> Tim Balmer
> Edutel BV
> 
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

--
Daniel-Constantin Mierla
www.kamailio.org -- www.asipto.com



More information about the sr-users mailing list