Fix invalid userids on profile requests
3 files changed, 16 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 33154294..86377da2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -582,7 +582,7 @@ if(USE_BUNDLED_MTXCLIENT)
FetchContent_Declare(
MatrixClient
GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
- GIT_TAG ce47f0b280c7e5241a556d63c518267d5e6b9c1c
+ GIT_TAG 43e88905659b027bc47c40fe0d31cf28fd639ef9
)
set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "")
set(BUILD_LIB_TESTS OFF CACHE INTERNAL "")
diff --git a/io.github.NhekoReborn.Nheko.yaml b/io.github.NhekoReborn.Nheko.yaml
index 603495b3..1ce2f69d 100644
--- a/io.github.NhekoReborn.Nheko.yaml
+++ b/io.github.NhekoReborn.Nheko.yaml
@@ -203,7 +203,7 @@ modules:
buildsystem: cmake-ninja
name: mtxclient
sources:
- - commit: ce47f0b280c7e5241a556d63c518267d5e6b9c1c
+ - commit: 43e88905659b027bc47c40fe0d31cf28fd639ef9
#tag: v0.8.0
type: git
url: https://github.com/Nheko-Reborn/mtxclient.git
diff --git a/src/Cache.cpp b/src/Cache.cpp
index 558eb334..ede2e4e5 100644
--- a/src/Cache.cpp
+++ b/src/Cache.cpp
@@ -4464,6 +4464,11 @@ Cache::markUserKeysOutOfDate(lmdb::txn &txn,
query.token = sync_token;
for (const auto &user : user_ids) {
+ if (user.size() > 255) {
+ nhlog::db()->debug("Skipping device key query for user with invalid mxid: {}", user);
+ continue;
+ }
+
nhlog::db()->debug("Marking user keys out of date: {}", user);
std::string_view oldKeys;
@@ -4504,6 +4509,15 @@ void
Cache::query_keys(const std::string &user_id,
std::function<void(const UserKeyCache &, mtx::http::RequestErr)> cb)
{
+ if (user_id.size() > 255) {
+ nhlog::db()->debug("Skipping device key query for user with invalid mxid: {}", user_id);
+
+ mtx::http::ClientError err{};
+ err.parse_error = "invalid mxid, more than 255 bytes";
+ cb({}, err);
+ return;
+ }
+
mtx::requests::QueryKeys req;
std::string last_changed;
{
|