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

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
     new da25f27e33 [FIX] Avoid NPE on partially written users in Cassandra 
users repository (#2458)
da25f27e33 is described below

commit da25f27e3377e363c776c47d13eab11306d181dc
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Thu Oct 17 10:57:08 2024 +0400

    [FIX] Avoid NPE on partially written users in Cassandra users repository 
(#2458)
---
 .../main/java/org/apache/james/user/cassandra/CassandraUsersDAO.java  | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git 
a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersDAO.java
 
b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersDAO.java
index 9ee5f5e5f0..077a0fa4e0 100644
--- 
a/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersDAO.java
+++ 
b/server/data/data-cassandra/src/main/java/org/apache/james/user/cassandra/CassandraUsersDAO.java
@@ -111,7 +111,7 @@ public class CassandraUsersDAO implements UsersDAO {
             .build());
 
         this.listStatement = session.prepare(selectFrom(TABLE_NAME)
-            .column(NAME)
+            .columns(NAME, ALGORITHM)
             .build());
 
         this.insertStatement = session.prepare(insertInto(TABLE_NAME)
@@ -173,6 +173,7 @@ public class CassandraUsersDAO implements UsersDAO {
         return executor.executeSingleRow(
                 getUserStatement.bind()
                     .setString(NAME, name.asString()))
+            .filter(row -> row.getString(ALGORITHM) != null)
             .map(row -> new DefaultUser(Username.of(row.getString(NAME)), 
row.getString(PASSWORD),
                 Algorithm.of(row.getString(ALGORITHM), fallbackHashingMode), 
preferredAlgorithm));
     }
@@ -308,6 +309,7 @@ public class CassandraUsersDAO implements UsersDAO {
     @Override
     public Flux<Username> listReactive() {
         return executor.executeRows(listStatement.bind())
+            .filter(row -> row.getString(ALGORITHM) != null)
             .mapNotNull(row -> row.getString(NAME))
             .map(Username::of);
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to