From 56984d59e9dc2be23356d3c6c7723d2475dcfd9e Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Fri, 24 Feb 2023 18:30:25 -0800 Subject: [PATCH] ircd::m: Fix various occurrences of state_key="" considered falsy. --- matrix/dbs_event_refs.cc | 4 ++-- matrix/hook.cc | 16 ++++++++-------- modules/client/sync/rooms/state.cc | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/matrix/dbs_event_refs.cc b/matrix/dbs_event_refs.cc index c688212ee..2af6097cf 100644 --- a/matrix/dbs_event_refs.cc +++ b/matrix/dbs_event_refs.cc @@ -454,7 +454,7 @@ ircd::m::dbs::_index_event_refs_state(db::txn &txn, if(!json::get<"room_id"_>(event)) return; - if(!json::get<"state_key"_>(event)) + if(!defined(json::get<"state_key"_>(event))) return; const m::room room @@ -531,7 +531,7 @@ ircd::m::dbs::_prefetch_event_refs_state(const event &event, assert(json::get<"type"_>(event)); assert(json::get<"room_id"_>(event)); - if(!json::get<"state_key"_>(event)) + if(!defined(json::get<"state_key"_>(event))) return false; const m::room room diff --git a/matrix/hook.cc b/matrix/hook.cc index 77da0287e..0662e2f8f 100644 --- a/matrix/hook.cc +++ b/matrix/hook.cc @@ -95,12 +95,12 @@ ircd::m::hook::maps::add(base &hook, if(json::get<"sender"_>(matching)) map(sender, at<"sender"_>(matching)); - if(json::get<"state_key"_>(matching)) - map(state_key, at<"state_key"_>(matching)); - if(json::get<"type"_>(matching)) map(type, at<"type"_>(matching)); + if(defined(json::get<"state_key"_>(matching))) + map(state_key, at<"state_key"_>(matching)); + // Hook had no mappings which means it will match everything. // We don't increment the matcher count for this case. if(!ret) @@ -139,12 +139,12 @@ ircd::m::hook::maps::del(base &hook, if(json::get<"sender"_>(matching)) unmap(sender, at<"sender"_>(matching)); - if(json::get<"state_key"_>(matching)) - unmap(state_key, at<"state_key"_>(matching)); - if(json::get<"type"_>(matching)) unmap(type, at<"type"_>(matching)); + if(defined(json::get<"state_key"_>(matching))) + unmap(state_key, at<"state_key"_>(matching)); + return ret; } @@ -178,7 +178,7 @@ const if(json::get<"type"_>(event)) site_match(type, at<"type"_>(event)); - if(json::get<"state_key"_>(event)) + if(defined(json::get<"state_key"_>(event))) site_match(state_key, at<"state_key"_>(event)); auto it(begin(matching)); @@ -703,7 +703,7 @@ ircd::m::_hook_match(const m::event &matching, if(at<"type"_>(matching) != json::get<"type"_>(event)) return false; - if(json::get<"state_key"_>(matching)) + if(defined(json::get<"state_key"_>(matching))) if(at<"state_key"_>(matching) != json::get<"state_key"_>(event)) return false; diff --git a/modules/client/sync/rooms/state.cc b/modules/client/sync/rooms/state.cc index 3f516aa3a..7a8fd4feb 100644 --- a/modules/client/sync/rooms/state.cc +++ b/modules/client/sync/rooms/state.cc @@ -92,7 +92,7 @@ ircd::m::sync::room_state_linear_events(data &data) return false; assert(data.event); - if(!json::get<"state_key"_>(*data.event)) + if(!defined(json::get<"state_key"_>(*data.event))) return false; const bool is_own_membership