@@ -247,7 +247,9 @@ function set_timer_interval(interval) {
247
247
}
248
248
249
249
function reset_timer ( ) {
250
- clearInterval ( timer ) ;
250
+ if ( timer != null ) {
251
+ clearInterval ( timer ) ;
252
+ }
251
253
if ( timer_interval != null ) {
252
254
timer = setInterval ( partial_update , timer_interval ) ;
253
255
}
@@ -726,13 +728,31 @@ function postprocess() {
726
728
update_multifields ( ) ;
727
729
}
728
730
731
+ function is_valid_regexp ( value ) {
732
+ try {
733
+ var _ = new RegExp ( value , 'i' ) ;
734
+ return true ;
735
+ } catch ( e ) {
736
+ return false ;
737
+ }
738
+ }
739
+
729
740
function url_pagination_template_context ( template , context , defaultPage , defaultPageSize ) {
730
741
var page_number_request = fmt_page_number_request ( context , defaultPage ) ;
731
742
var page_size = fmt_page_size_request ( context , defaultPageSize ) ;
732
743
var name_request = fmt_filter_name_request ( context , "" ) ;
733
744
var use_regex = fmt_regex_request ( context , "" ) == "checked" ;
734
745
if ( use_regex ) {
735
- name_request = esc ( name_request ) ;
746
+ // rabbitmq/rabbitmq-server#8008: if the expression cannot be compiled to a reg exp,
747
+ // assume a regular text filter
748
+ var valid_regexp = is_valid_regexp ( name_request ) ;
749
+ if ( ! valid_regexp ) {
750
+ show_popup ( 'warn' , fmt_escape_html ( `Filter expression '${ name_request } ' is not a valid regular expression, will perform a regular text query` ) ) ;
751
+ use_regex = false ;
752
+ }
753
+ if ( use_regex && valid_regexp ) {
754
+ name_request = esc ( name_request ) ;
755
+ }
736
756
}
737
757
return '/' + template +
738
758
'?page=' + page_number_request +
0 commit comments