Compare commits

...

2 Commits

Author SHA1 Message Date
4a5dd4dd69 Fix(ui.h): cons_show_qrcode declaration. Minor change
Some checks failed
CI / Check spelling (pull_request) Successful in 17s
CI / Check coding style (pull_request) Successful in 32s
CI / Linux (debian) (pull_request) Failing after 1m19s
CI / Linux (ubuntu) (pull_request) Successful in 10m15s
CI / Linux (arch) (pull_request) Successful in 12m3s
Prior to the change declaration did not include parameters, leading to errors in static analyzers and potential issues with compilation.
2025-09-01 23:00:51 +02:00
ac2b6b9635 fix(cmd_sub): Prevent crash with malformed JID in /sub command
Added null check for jidp in cmd_sub to handle jid_create returning NULL.

Crash occurred when processing malformed JID inputs like @example.com.

Ensures robust handling of invalid JIDs.

Fixes #23
2025-09-01 22:59:35 +02:00
5 changed files with 21 additions and 1 deletions

View File

@@ -1263,6 +1263,11 @@ cmd_sub(ProfWin* window, const char* const command, gchar** args)
auto_jid Jid* jidp = jid_create(jid);
if (jidp == NULL) {
cons_show("Malformed JID: %s", jid);
return TRUE;
}
if (strcmp(subcmd, "allow") == 0) {
presence_subscription(jidp->barejid, PRESENCE_SUBSCRIBED);
cons_show("Accepted subscription for %s", jidp->barejid);

View File

@@ -289,7 +289,7 @@ void cons_show_disco_info(const char* from, GSList* identities, GSList* features
void cons_show_disco_contact_information(GHashTable* addresses);
void cons_show_qrcode();
void cons_show_qrcode(const char* const text);
void cons_show_room_invite(const char* const invitor, const char* const room, const char* const reason);
void cons_check_version(gboolean not_available_msg);

View File

@@ -40,3 +40,16 @@ cmd_sub_shows_usage_when_no_arg(void** state)
gboolean result = cmd_sub(NULL, CMD_SUB, args);
assert_true(result);
}
void
test_cmd_sub_malformed_jid(void** state)
{
ProfWin win;
gchar* args[] = { "request", "@example.com" };
will_return(connection_get_status, JABBER_CONNECTED);
expect_cons_show("Malformed JID: @example.com");
gboolean result = cmd_sub((ProfWin*)&win, CMD_SUB, args);
assert_true(result);
}

View File

@@ -1,2 +1,3 @@
void cmd_sub_shows_message_when_not_connected(void** state);
void cmd_sub_shows_usage_when_no_arg(void** state);
void test_cmd_sub_malformed_jid(void** state);

View File

@@ -386,6 +386,7 @@ main(int argc, char* argv[])
cmocka_unit_test(cmd_sub_shows_message_when_not_connected),
cmocka_unit_test(cmd_sub_shows_usage_when_no_arg),
cmocka_unit_test(test_cmd_sub_malformed_jid),
cmocka_unit_test(contact_in_group),
cmocka_unit_test(contact_not_in_group),