1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Fix invalid read in muc code

We didn't set the variables to NULL, but the rest of the code depends on
this check.
```
==22201== Invalid read of size 8
==22201==    at 0x44E560: autocomplete_clear (autocomplete.c:69)
==22201==    by 0x427B2C: muc_invites_clear (muc.c:190)
==22201==    by 0x461328: ev_disconnect_cleanup (common.c:59)
==22201==    by 0x463FB5: cl_ev_disconnect (client_events.c:91)
==22201==    by 0x431252: cmd_disconnect (cmd_funcs.c:1234)
==22201==    by 0x47E883: clears_chat_sessions
(test_cmd_disconnect.c:28)
==22201==    by 0x487E9E1: _run_test (in /usr/lib64/libcmocka.so.0.7.0)
==22201==    by 0x487ECCC: _run_tests (in /usr/lib64/libcmocka.so.0.7.0)
==22201==    by 0x47F1BE: main (unittests.c:629)
==22201==  Address 0x814b690 is 0 bytes inside a block of size 24 free'd
==22201==    at 0x48379AB: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==22201==    by 0x44E5F7: autocomplete_free (autocomplete.c:90)
==22201==    by 0x4278A0: muc_close (muc.c:97)
==22201==    by 0x47DBAA: cmd_join_uses_password_when_supplied
(test_cmd_join.c:169)
==22201==    by 0x487E9E1: _run_test (in /usr/lib64/libcmocka.so.0.7.0)
==22201==    by 0x487ECCC: _run_tests (in /usr/lib64/libcmocka.so.0.7.0)
==22201==    by 0x47F1BE: main (unittests.c:629)
==22201==  Block was alloc'd at
==22201==    at 0x483677F: malloc (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==22201==    by 0x44E51B: autocomplete_new (autocomplete.c:57)
==22201==    by 0x427837: muc_init (muc.c:88)
==22201==    by 0x47DA77: cmd_join_uses_password_when_supplied
(test_cmd_join.c:154)
==22201==    by 0x487E9E1: _run_test (in /usr/lib64/libcmocka.so.0.7.0)
==22201==    by 0x487ECCC: _run_tests (in /usr/lib64/libcmocka.so.0.7.0)
==22201==    by 0x47F1BE: main (unittests.c:629)
```
This commit is contained in:
Michael Vetter 2019-10-06 19:00:46 +02:00
parent 1746f5f8a8
commit 94b401ab96

View File

@ -69,8 +69,8 @@ typedef struct _muc_room_t {
GHashTable *rooms = NULL; GHashTable *rooms = NULL;
GHashTable *invite_passwords = NULL; GHashTable *invite_passwords = NULL;
Autocomplete invite_ac; Autocomplete invite_ac = NULL;
Autocomplete confservers_ac; Autocomplete confservers_ac = NULL;
static void _free_room(ChatRoom *room); static void _free_room(ChatRoom *room);
static gint _compare_occupants(Occupant *a, Occupant *b); static gint _compare_occupants(Occupant *a, Occupant *b);
@ -100,6 +100,8 @@ muc_close(void)
g_hash_table_destroy(invite_passwords); g_hash_table_destroy(invite_passwords);
rooms = NULL; rooms = NULL;
invite_passwords = NULL; invite_passwords = NULL;
invite_ac = NULL;
confservers_ac = NULL;
} }
void void