refactor: optimize hash table iterations and fix security issues #58
Some checks failed
CI Code / Check coding style (pull_request) Successful in 38s
CI API Docs / Test Python API Documentation Generation (pull_request) Has been cancelled
CI API Docs / Test C API Documentation Generation (pull_request) Has been cancelled
CI Code / Check spelling (pull_request) Successful in 49s
CI Code / Linux (ubuntu) (pull_request) Successful in 6m22s
CI Code / Linux (debian) (pull_request) Successful in 9m3s
CI Code / Code Coverage (pull_request) Successful in 9m16s
CI Code / Linux (arch) (pull_request) Successful in 11m20s
Some checks failed
CI Code / Check coding style (pull_request) Successful in 38s
CI API Docs / Test Python API Documentation Generation (pull_request) Has been cancelled
CI API Docs / Test C API Documentation Generation (pull_request) Has been cancelled
CI Code / Check spelling (pull_request) Successful in 49s
CI Code / Linux (ubuntu) (pull_request) Successful in 6m22s
CI Code / Linux (debian) (pull_request) Successful in 9m3s
CI Code / Code Coverage (pull_request) Successful in 9m16s
CI Code / Linux (arch) (pull_request) Successful in 11m20s
- refactor(core): replace g_hash_table_get_keys with g_hash_table_iter_init
* Eliminates temporary GList allocations
* Improves iteration performance
* Affected: connection.c, cmd_defs.c, cmd_funcs.c, omemo.c, gpg.c,
disco.c, form.c, autocompleters.c, capabilities.c, callbacks.c
- fix(xmpp): correct queued_messages loop in connection.c:1031
* Remove incorrect NULL check that prevented message storage
* calloc zeros array, causing loop to skip immediately
* Fixes dropped messages during reconnection with SM enabled
- fix(ui): prevent format string vulnerabilities in cons_show calls
* Replace cons_show(variable) with cons_show("%s", variable)
* Protects against format string attacks if variables contain %
* Updated instances across cmd_funcs.c, connection.c, ox.c,
console.c, core.c
This commit is contained in:
@@ -171,16 +171,15 @@ caps_get_features(void)
|
||||
{
|
||||
GList* result = NULL;
|
||||
|
||||
GList* features_as_list = g_hash_table_get_keys(prof_features);
|
||||
GList* curr = features_as_list;
|
||||
while (curr) {
|
||||
result = g_list_append(result, strdup(curr->data));
|
||||
curr = g_list_next(curr);
|
||||
GHashTableIter iter;
|
||||
gpointer key, value;
|
||||
g_hash_table_iter_init(&iter, prof_features);
|
||||
while (g_hash_table_iter_next(&iter, &key, &value)) {
|
||||
result = g_list_append(result, strdup((char*)key));
|
||||
}
|
||||
g_list_free(features_as_list);
|
||||
|
||||
GList* plugin_features = plugins_get_disco_features();
|
||||
curr = plugin_features;
|
||||
GList* curr = plugin_features;
|
||||
while (curr) {
|
||||
result = g_list_append(result, strdup(curr->data));
|
||||
curr = g_list_next(curr);
|
||||
|
||||
Reference in New Issue
Block a user