From ee5061a32e7b9054a982f3ed5260a5946e6b65a6 Mon Sep 17 00:00:00 2001
From: Ivan Kohler <ivan@freeside.biz>
Date: Mon, 6 Mar 2017 09:25:12 -0800
Subject: [PATCH] don't allow two character substring searches, RT#75012

---
 FS/FS/cust_main/Search.pm | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/FS/FS/cust_main/Search.pm b/FS/FS/cust_main/Search.pm
index 14dd4b469..c5a87eb04 100644
--- a/FS/FS/cust_main/Search.pm
+++ b/FS/FS/cust_main/Search.pm
@@ -358,13 +358,15 @@ sub smart_search {
 
       #substring
 
-      my @company_hashrefs = (
-        { 'company'      => { op=>'ILIKE', value=>"%$value%" }, },
-        { 'ship_company' => { op=>'ILIKE', value=>"%$value%" }, },
-      );
+      my @company_hashrefs = ();
+      if ( length($value) >= 3 ) {
+        @company_hashrefs = (
+          { 'company'      => { op=>'ILIKE', value=>"%$value%" }, },
+          { 'ship_company' => { op=>'ILIKE', value=>"%$value%" }, },
+        );
+      }
 
       my @hashrefs = ();
-
       if ( $first && $last ) {
 
         @hashrefs = (
@@ -373,12 +375,13 @@ sub smart_search {
           },
         );
 
-      } else {
+      } elsif ( length($value) >= 3 ) {
 
         @hashrefs = (
           { 'first'        => { op=>'ILIKE', value=>"%$value%" }, },
           { 'last'         => { op=>'ILIKE', value=>"%$value%" }, },
         );
+
       }
 
       foreach my $hashref ( @company_hashrefs, @hashrefs ) {
@@ -393,7 +396,7 @@ sub smart_search {
 
       }
 
-      if ( $conf->exists('address1-search') ) {
+      if ( $conf->exists('address1-search') && length($value) >= 3 ) {
 
         push @cust_main, qsearch( {
           table     => 'cust_main',
-- 
2.20.1