From 3990fb6cfb912ba27256a729eb8d74129b278a11 Mon Sep 17 00:00:00 2001
From: felmer <franz-josef.elmer@id.ethz.ch>
Date: Thu, 16 May 2019 11:42:49 +0200
Subject: [PATCH] SSDM-7557: NPE bug in hasInvalidCodes() fixed

---
 .../dataaccess/db/HibernateSearchDAO.java     | 27 ++++++++++---------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java
index 1ea28d49a95..e84de4016b2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java
@@ -815,22 +815,25 @@ final class HibernateSearchDAO extends HibernateDaoSupport implements IHibernate
 
     private boolean hasInvalidCodes(DetailedSearchCriteria searchCriteria)
     {
-        for (DetailedSearchCriterion criterion : searchCriteria.getCriteria())
+        if (searchCriteria != null)
         {
-            String value = criterion.getValue();
-            DetailedSearchField field = criterion.getField();
-            DetailedSearchFieldKind kind = field.getKind();
-            if (DetailedSearchFieldKind.ATTRIBUTE.equals(kind) && field.getAttributeCode().equals("CODE") 
-                    && VALID_CODE_PATTERN.matcher(value).matches() == false)
+            for (DetailedSearchCriterion criterion : searchCriteria.getCriteria())
             {
-                return true;
+                String value = criterion.getValue();
+                DetailedSearchField field = criterion.getField();
+                DetailedSearchFieldKind kind = field.getKind();
+                if (DetailedSearchFieldKind.ATTRIBUTE.equals(kind) && field.getAttributeCode().equals("CODE") 
+                        && VALID_CODE_PATTERN.matcher(value).matches() == false)
+                {
+                    return true;
+                }
             }
-        }
-        for (DetailedSearchSubCriteria subCriteria : searchCriteria.getSubCriterias())
-        {
-            if (hasInvalidCodes(subCriteria.getCriteria()))
+            for (DetailedSearchSubCriteria subCriteria : searchCriteria.getSubCriterias())
             {
-                return true;
+                if (hasInvalidCodes(subCriteria.getCriteria()))
+                {
+                    return true;
+                }
             }
         }
         return false;
-- 
GitLab