From bac24601da20904eb61f9f257f7fc9e4cd816adc Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Tue, 5 Dec 2023 12:59:51 +0100 Subject: [PATCH] Introduce `equals_our_barejid()` Instead of always repeating the same pattern, introduce a helper function. Signed-off-by: Steffen Jaeckel --- src/command/cmd_funcs.c | 2 +- src/event/server_events.c | 2 +- src/omemo/omemo.c | 4 ++-- src/xmpp/connection.c | 6 ++++++ src/xmpp/message.c | 6 +++--- src/xmpp/muc.c | 2 +- src/xmpp/roster.c | 2 +- src/xmpp/xmpp.h | 1 + tests/unittests/xmpp/stub_xmpp.c | 6 ++++++ 9 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index b13115db..ac06c92d 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -3452,7 +3452,7 @@ _send_software_version_iq_to_fulljid(char* request) if (jid == NULL || jid->fulljid == NULL) { cons_show("You must provide a full jid to the /software command."); - } else if (g_strcmp0(jid->barejid, connection_get_barejid()) == 0) { + } else if (equals_our_barejid(jid->barejid)) { cons_show("Cannot request software version for yourself."); } else { iq_send_software_version(jid->fulljid); diff --git a/src/event/server_events.c b/src/event/server_events.c index e759088e..c79f990a 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -629,7 +629,7 @@ sv_ev_incoming_message(ProfMessage* message) char* looking_for_jid = message->from_jid->barejid; if (message->is_mam) { - if (g_strcmp0(connection_get_barejid(), message->from_jid->barejid) == 0) { + if (equals_our_barejid(message->from_jid->barejid)) { if (message->to_jid) { looking_for_jid = message->to_jid->barejid; } diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c index 0382de04..53e7791c 100644 --- a/src/omemo/omemo.c +++ b/src/omemo/omemo.c @@ -378,7 +378,7 @@ omemo_start_session(const char* const barejid) log_debug("[OMEMO] missing device list for %s", barejid); // Own devices are handled by _handle_own_device_list // We won't add _handle_device_list_start_session for ourself - if (g_strcmp0(connection_get_barejid(), barejid) != 0) { + if (equals_our_barejid(barejid)) { g_hash_table_insert(omemo_ctx.device_list_handler, strdup(barejid), _handle_device_list_start_session); } omemo_devicelist_request(barejid); @@ -756,7 +756,7 @@ omemo_on_message_send(ProfWin* win, const char* const message, gboolean request_ // Don't encrypt for this device (according to // ). // Yourself as recipients in case of MUC - if (!g_strcmp0(connection_get_barejid(), recipients_iter->data)) { + if (equals_our_barejid(recipients_iter->data)) { if (GPOINTER_TO_INT(device_ids_iter->data) == omemo_ctx.device_id) { log_debug("[OMEMO][SEND] Skipping %d (my device) ", GPOINTER_TO_INT(device_ids_iter->data)); continue; diff --git a/src/xmpp/connection.c b/src/xmpp/connection.c index b199eb05..49e82296 100644 --- a/src/xmpp/connection.c +++ b/src/xmpp/connection.c @@ -759,6 +759,12 @@ connection_get_barejid(void) return connection_get_jid()->barejid; } +gboolean +equals_our_barejid(const char* cmp) +{ + return g_strcmp0(connection_get_jid()->barejid, cmp) == 0; +} + char* connection_get_user(void) { diff --git a/src/xmpp/message.c b/src/xmpp/message.c index 3f8addbc..93ef260c 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -101,7 +101,7 @@ static GHashTable* pubsub_event_handlers; gchar* get_display_name(const ProfMessage* const message, int* flags) { - if (g_strcmp0(connection_get_barejid(), message->from_jid->barejid) == 0) { + if (equals_our_barejid(message->from_jid->barejid)) { return g_strdup("me"); } else { if (flags) @@ -262,7 +262,7 @@ _message_handler(xmpp_conn_t* const conn, xmpp_stanza_t* const stanza, void* con const char* const stanza_from = xmpp_stanza_get_from(stanza); if (stanza_from) { - if (g_strcmp0(connection_get_barejid(), stanza_from) != 0) { + if (!equals_our_barejid(stanza_from)) { log_warning("Invalid carbon received, from: %s", stanza_from); msg_stanza = NULL; } else { @@ -1462,7 +1462,7 @@ _handle_chat(xmpp_stanza_t* const stanza, gboolean is_mam, gboolean is_carbon, c if (message->plain || message->body || message->encrypted) { if (is_carbon) { // if we are the recipient, treat as standard incoming message - if (g_strcmp0(connection_get_barejid(), message->to_jid->barejid) == 0) { + if (equals_our_barejid(message->to_jid->barejid)) { sv_ev_incoming_carbon(message); // else treat as a sent message } else { diff --git a/src/xmpp/muc.c b/src/xmpp/muc.c index 34ee6b65..6e4f33fc 100644 --- a/src/xmpp/muc.c +++ b/src/xmpp/muc.c @@ -882,7 +882,7 @@ muc_members_add(const char* const room, const char* const jid) if (g_hash_table_insert(chat_room->members, strdup(jid), NULL)) { #ifdef HAVE_OMEMO if (chat_room->anonymity_type == MUC_ANONYMITY_TYPE_NONANONYMOUS) { - if (strcmp(jid, connection_get_barejid()) != 0) { + if (!equals_our_barejid(jid)) { omemo_start_session(jid); } } diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c index 9d2b3972..dac0d735 100644 --- a/src/xmpp/roster.c +++ b/src/xmpp/roster.c @@ -201,7 +201,7 @@ roster_set_handler(xmpp_stanza_t* const stanza) // if from attribute exists and it is not current users barejid, ignore push const char* from = xmpp_stanza_get_from(stanza); - if (from && (strcmp(from, connection_get_barejid()) != 0)) { + if (!equals_our_barejid(from)) { log_warning("Received alleged roster push from: %s", from); return; } diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index bbff1928..57079d1f 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -195,6 +195,7 @@ void connection_set_presence_msg(const char* const message); const char* connection_get_fulljid(void); const Jid* connection_get_jid(void); const char* connection_get_barejid(void); +gboolean equals_our_barejid(const char* cmp); char* connection_get_user(void); char* connection_create_uuid(void); void connection_free_uuid(char* uuid); diff --git a/tests/unittests/xmpp/stub_xmpp.c b/tests/unittests/xmpp/stub_xmpp.c index 9d616b08..4d6bd3df 100644 --- a/tests/unittests/xmpp/stub_xmpp.c +++ b/tests/unittests/xmpp/stub_xmpp.c @@ -75,6 +75,12 @@ connection_get_barejid(void) return mock_ptr_type(char*); } +gboolean +equals_our_barejid(const char* cmp) +{ + return TRUE; +} + char* connection_get_user(void) {