From d081993c90758a09d345736f4331350eb856cc36 Mon Sep 17 00:00:00 2001 From: "jabber.developer2" Date: Sat, 7 Mar 2026 13:08:07 +0300 Subject: [PATCH] fix: address PR #98 review feedback - check-cwe134.sh: match gchar* in addition to char* in variadic pattern - rosterwin.c: merge duplicated if/else into single condition - omemo.c: remove unnecessary scope block and goto, use early return --- check-cwe134.sh | 6 +++--- src/ui/rosterwin.c | 24 ++++++------------------ src/xmpp/omemo.c | 35 ++++++++++++++++------------------- 3 files changed, 25 insertions(+), 40 deletions(-) diff --git a/check-cwe134.sh b/check-cwe134.sh index 20002e59..b2ef7d86 100755 --- a/check-cwe134.sh +++ b/check-cwe134.sh @@ -72,13 +72,13 @@ echo "" KNOWN_RE=$(IFS="|"; echo "${REQUIRED_ATTRIBUTED[*]}") -# Find variadic declarations with a const char* parameter followed by ...) +# Find variadic declarations with a const char* / gchar* parameter followed by ...) # that do NOT have a format attribute on the preceding line NEW_ISSUES=$(grep -B1 -rn --include="*.h" \ - 'const char\s*\*.*,\s*\.\.\.)' "$DIR" 2>/dev/null \ + 'const g\?char\s*\*.*,\s*\.\.\.)' "$DIR" 2>/dev/null \ | awk ' /format\(printf|G_GNUC_PRINTF/ { skip=1; next } - /const char.*,.*\.\.\.\)/ { + /const g?char.*,.*\.\.\.\)/ { if (skip) { skip=0; next } print } diff --git a/src/ui/rosterwin.c b/src/ui/rosterwin.c index 9ef87f31..92a44b9a 100644 --- a/src/ui/rosterwin.c +++ b/src/ui/rosterwin.c @@ -981,9 +981,7 @@ _rosterwin_unsubscribed_header(ProfLayoutSplit* layout, GList* wins) auto_gchar gchar* countpref = prefs_get_string(PREF_ROSTER_COUNT); if (g_strcmp0(countpref, "items") == 0) { int itemcount = g_list_length(wins); - if (itemcount == 0 && prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { - g_string_append_printf(header, " (%d)", itemcount); - } else if (itemcount > 0) { + if (itemcount != 0 || prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { g_string_append_printf(header, " (%d)", itemcount); } } else if (g_strcmp0(countpref, "unread") == 0) { @@ -994,9 +992,7 @@ _rosterwin_unsubscribed_header(ProfLayoutSplit* layout, GList* wins) unreadcount += chatwin->unread; curr = g_list_next(curr); } - if (unreadcount == 0 && prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { - g_string_append_printf(header, " (%d)", unreadcount); - } else if (unreadcount > 0) { + if (unreadcount != 0 || prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { g_string_append_printf(header, " (%d)", unreadcount); } } @@ -1026,9 +1022,7 @@ _rosterwin_contacts_header(ProfLayoutSplit* layout, const char* const title, GSL auto_gchar gchar* countpref = prefs_get_string(PREF_ROSTER_COUNT); if (g_strcmp0(countpref, "items") == 0) { int itemcount = g_slist_length(contacts); - if (itemcount == 0 && prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { - g_string_append_printf(header, " (%d)", itemcount); - } else if (itemcount > 0) { + if (itemcount != 0 || prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { g_string_append_printf(header, " (%d)", itemcount); } } else if (g_strcmp0(countpref, "unread") == 0) { @@ -1043,9 +1037,7 @@ _rosterwin_contacts_header(ProfLayoutSplit* layout, const char* const title, GSL } curr = g_slist_next(curr); } - if (unreadcount == 0 && prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { - g_string_append_printf(header, " (%d)", unreadcount); - } else if (unreadcount > 0) { + if (unreadcount != 0 || prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { g_string_append_printf(header, " (%d)", unreadcount); } } @@ -1136,9 +1128,7 @@ _rosterwin_private_header(ProfLayoutSplit* layout, GList* privs) auto_gchar gchar* countpref = prefs_get_string(PREF_ROSTER_COUNT); if (g_strcmp0(countpref, "items") == 0) { int itemcount = g_list_length(privs); - if (itemcount == 0 && prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { - g_string_append_printf(title_str, " (%d)", itemcount); - } else if (itemcount > 0) { + if (itemcount != 0 || prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { g_string_append_printf(title_str, " (%d)", itemcount); } } else if (g_strcmp0(countpref, "unread") == 0) { @@ -1149,9 +1139,7 @@ _rosterwin_private_header(ProfLayoutSplit* layout, GList* privs) unreadcount += privwin->unread; curr = g_list_next(curr); } - if (unreadcount == 0 && prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { - g_string_append_printf(title_str, " (%d)", unreadcount); - } else if (unreadcount > 0) { + if (unreadcount != 0 || prefs_get_boolean(PREF_ROSTER_COUNT_ZERO)) { g_string_append_printf(title_str, " (%d)", unreadcount); } } diff --git a/src/xmpp/omemo.c b/src/xmpp/omemo.c index 6e3f8ed9..b9b0faf3 100644 --- a/src/xmpp/omemo.c +++ b/src/xmpp/omemo.c @@ -517,32 +517,29 @@ _omemo_receive_devicelist(xmpp_stanza_t* const stanza, void* const userdata) log_warning("[OMEMO] User %s has a non 'current' device item list: %s.", from, xmpp_stanza_get_id(first)); item = first; } else { - goto out; + omemo_set_device_list(from, device_list); + return 1; } - /* New scope to keep declarations after goto out above */ - { - xmpp_stanza_t* list = xmpp_stanza_get_child_by_ns(item, STANZA_NS_OMEMO); - if (!list) { - return 1; + xmpp_stanza_t* list = xmpp_stanza_get_child_by_ns(item, STANZA_NS_OMEMO); + if (!list) { + return 1; + } + + xmpp_stanza_t* device; + for (device = xmpp_stanza_get_children(list); device != NULL; device = xmpp_stanza_get_next(device)) { + if (g_strcmp0(xmpp_stanza_get_name(device), "device") != 0) { + continue; } - xmpp_stanza_t* device; - for (device = xmpp_stanza_get_children(list); device != NULL; device = xmpp_stanza_get_next(device)) { - if (g_strcmp0(xmpp_stanza_get_name(device), "device") != 0) { - continue; - } - - const char* id = xmpp_stanza_get_id(device); - if (id != NULL) { - device_list = g_list_append(device_list, GINT_TO_POINTER(strtoul(id, NULL, 10))); - } else { - log_error("[OMEMO] received device without ID"); - } + const char* id = xmpp_stanza_get_id(device); + if (id != NULL) { + device_list = g_list_append(device_list, GINT_TO_POINTER(strtoul(id, NULL, 10))); + } else { + log_error("[OMEMO] received device without ID"); } } -out: omemo_set_device_list(from, device_list); return 1;