diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index bcc6b85c..ae3d0600 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -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); diff --git a/src/ui/ui.h b/src/ui/ui.h index 0d0efcde..1af8529e 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -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); diff --git a/tests/unittests/test_cmd_sub.c b/tests/unittests/test_cmd_sub.c index d03f6b5c..2db13337 100644 --- a/tests/unittests/test_cmd_sub.c +++ b/tests/unittests/test_cmd_sub.c @@ -40,3 +40,17 @@ 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; + win.type = WIN_CONSOLE; + 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); +} \ No newline at end of file diff --git a/tests/unittests/test_cmd_sub.h b/tests/unittests/test_cmd_sub.h index 6cebf649..fa86d540 100644 --- a/tests/unittests/test_cmd_sub.h +++ b/tests/unittests/test_cmd_sub.h @@ -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); \ No newline at end of file diff --git a/tests/unittests/unittests.c b/tests/unittests/unittests.c index 7b94ebcf..88e1ec98 100644 --- a/tests/unittests/unittests.c +++ b/tests/unittests/unittests.c @@ -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),