From 2d68d7dc59ec6156175ba5f760c5c2fa34e0b5fb Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Mon, 20 Apr 2020 14:27:43 +0200 Subject: [PATCH] fix to_tsquery disallowed chars --- app/services/dossier_search_service.rb | 2 +- spec/services/dossier_search_service_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/services/dossier_search_service.rb b/app/services/dossier_search_service.rb index 67308babb..d001772a2 100644 --- a/app/services/dossier_search_service.rb +++ b/app/services/dossier_search_service.rb @@ -62,8 +62,8 @@ class DossierSearchService def self.to_tsquery(search_terms) (search_terms || "") - .strip .gsub(/['?\\:&|!<>\(\)]/, "") # drop disallowed characters + .strip .split(/\s+/) # split words .map { |x| "#{x}:*" } # enable prefix matching .join(" & ") diff --git a/spec/services/dossier_search_service_spec.rb b/spec/services/dossier_search_service_spec.rb index 950f5b918..16d613acc 100644 --- a/spec/services/dossier_search_service_spec.rb +++ b/spec/services/dossier_search_service_spec.rb @@ -198,5 +198,11 @@ describe DossierSearchService do it { expect(subject.size).to eq(1) } end + + describe 'search with a single forbidden character should not crash postgres' do + let(:terms) { '? OCTO' } + + it { expect(subject.size).to eq(3) } + end end end