This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 4_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/4_1_X by this push:
     new 18c08d3e58 Ensuring to escape Neo4j property values for search
18c08d3e58 is described below

commit 18c08d3e58383c3281582145d6b05efdc1a00eac
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Mon Sep 7 15:34:02 2026 +0200

    Ensuring to escape Neo4j property values for search
---
 .../syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java       | 6 +++---
 .../syncope/core/persistence/neo4j/dao/Neo4jRealmSearchDAO.java     | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
index a433c9fb2e..992a06d148 100644
--- 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
+++ 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jAnySearchDAO.java
@@ -122,7 +122,7 @@ public class Neo4jAnySearchDAO extends AbstractAnySearchDAO 
{
 
     protected static String escapeIfString(final String value, final boolean 
isStr) {
         return isStr
-                ? new 
StringBuilder().append('"').append(value).append('"').toString()
+                ? new 
StringBuilder().append('"').append(AnyRepoExt.escapeForLikeRegex(value)).append('"').toString()
                 : value;
     }
 
@@ -575,7 +575,7 @@ public class Neo4jAnySearchDAO extends AbstractAnySearchDAO 
{
             if 
(!SyncopeConstants.UUID_PATTERN.matcher(cond.getExpression()).matches()) {
                 Realm realm = 
realmSearchDAO.findByFullPath(cond.getExpression()).
                         orElseThrow(() -> new IllegalArgumentException(
-                        "Invalid Realm full path: " + cond.getExpression()));
+                                "Invalid Realm full path: " + 
cond.getExpression()));
                 cond.setExpression(realm.getKey());
             }
 
@@ -766,7 +766,7 @@ public class Neo4jAnySearchDAO extends AbstractAnySearchDAO 
{
         Stream.concat(
                 queryInfo.fields().stream(),
                 orderBy.stream().filter(clause -> 
!"id".equals(clause.getProperty())
-                && 
anyUtils.getField(clause.getProperty()).isPresent()).map(Order::getProperty)).
+                        && 
anyUtils.getField(clause.getProperty()).isPresent()).map(Order::getProperty)).
                 distinct().forEach(field -> match.append(", 
n.").append(field).append(" AS ").append(field));
 
         // take plain schemas into account
diff --git 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmSearchDAO.java
 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmSearchDAO.java
index 7fc1dccfd0..d4bf3ceb59 100644
--- 
a/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmSearchDAO.java
+++ 
b/core/persistence-neo4j/src/main/java/org/apache/syncope/core/persistence/neo4j/dao/Neo4jRealmSearchDAO.java
@@ -103,7 +103,7 @@ public class Neo4jRealmSearchDAO extends 
AbstractRealmSearchDAO {
 
     protected static String escapeIfString(final String value, final boolean 
isStr) {
         return isStr
-                ? new 
StringBuilder().append('"').append(value).append('"').toString()
+                ? new 
StringBuilder().append('"').append(AnyRepoExt.escapeForLikeRegex(value)).append('"').toString()
                 : value;
     }
 
@@ -282,7 +282,7 @@ public class Neo4jRealmSearchDAO extends 
AbstractRealmSearchDAO {
         Stream.concat(
                 queryInfo.fields().stream(),
                 orderBy.stream().filter(clause -> 
!"id".equals(clause.getProperty())
-                && 
realmUtils.getField(clause.getProperty()).isPresent()).map(Order::getProperty)).
+                        && 
realmUtils.getField(clause.getProperty()).isPresent()).map(Order::getProperty)).
                 distinct().forEach(field -> match.append(", 
n.").append(field).append(" AS ").append(field));
 
         // take plain schemas into account

Reply via email to