Fix link quote regexp which could infinite loop in rare cases

Namely https://elk-dev.modeus.me/app/kibana?#/discover?_g=(filters:!(),refreshInterval:(display:Off,pause:!f,value:0),time:(from:now-15m,mode:quick,to:now))&_a=(columns:!(level,service_name,message,docker_service,docker_container),filters:!(('$$hashKey':'object:10530','$state':(store:appState),meta:(alias:!n,disabled:!t,index:'logstash-*',key:service_name,negate:!f,value:periodplanning),query:(match:(service_name:(query:periodplanning,type:phrase)))),('$$hashKey':'object:10788','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:docker_container,negate:!f,value:dev-2),query:(match:(docker_container:(query:dev-2,type:phrase)))),('$$hashKey':'object:19295','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:EventId.Name,negate:!t,value:Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted),query:(match:(EventId.Name:(query:Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted,type:phrase)))),('$$hashKey':'object:20835','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:SourceContext,negate:!t,value:CUSTIS.Modeus.PeriodPlanning.Api.MinioProvider),query:(match:(SourceContext:(query:CUSTIS.Modeus.PeriodPlanning.Api.MinioProvider,type:phrase)))),('$$hashKey':'object:21337','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:EventId.Name,negate:!t,value:Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning),query:(match:(EventId.Name:(query:Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning,type:phrase)))),('$$hashKey':'object:22315','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:EventId.Name,negate:!t,value:Microsoft.EntityFrameworkCore.Query.IncludeIgnoredWarning),query:(match:(EventId.Name:(query:Microsoft.EntityFrameworkCore.Query.IncludeIgnoredWarning,type:phrase)))),('$$hashKey':'object:22807','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:EventId.Name,negate:!t,value:Microsoft.EntityFrameworkCore.Query.FirstWithoutOrderByAndFilterWarning),query:(match:(EventId.Name:(query:Microsoft.EntityFrameworkCore.Query.FirstWithoutOrderByAndFilterWarning,type:phrase)))),('$$hashKey':'object:23246','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:SourceContext,negate:!t,value:CUSTIS.Modeus.PeriodPlanning.Services.ConsolidatedPlanService),query:(match:(SourceContext:(query:CUSTIS.Modeus.PeriodPlanning.Services.ConsolidatedPlanService,type:phrase)))),('$$hashKey':'object:23754','$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logstash-*',key:SourceContext,negate:!t,value:CUSTIS.Modeus.PeriodPlanning.Services.ContingentService),query:(match:(SourceContext:(query:CUSTIS.Modeus.PeriodPlanning.Services.ContingentService,type:phrase))))),index:'logstash-*',interval:auto,query:(query_string:(analyze_wildcard:!t,query:'service_name:%20"periodplanning"')),sort:!('@timestamp',desc))

:-P
beta
Vitaliy Filippov 2019-12-25 20:34:57 +03:00
parent ce04ad9344
commit 655d27d543
1 changed files with 1 additions and 1 deletions

View File

@ -290,7 +290,7 @@ sub quoteUrls
}
# the protocol + non-whitespace + recursive braces + ending in [\w/~=)]
$text =~ s/\b((?:$safe_protocols):([^\s<>\"\(\)]+|\((?2)*\))+(?<=[\w\/~=)]))/
$text =~ s/\b((?:$safe_protocols):((?>[^\s<>\"\(\)]+|\((?:(?2)|\")*\)))+(?<=[\w\/~=)]))/
($tmp = html_quote($1)) &&
($things[$count++] = "<a href=\"$tmp\">$tmp<\/a>") &&
("\0\0" . ($count-1) . "\0\0")