Commit Graph

7657 Commits

Author SHA1 Message Date
c67f716eb9 upstream: fix(ui): Fix custom outgoing stamp and fix stamp command help (b0a89530f) 2026-03-31 19:57:34 +03:00
b0f4590082 upstream: feat: Add command autocompletion for /stamp (9035af95c) 2026-03-31 19:57:34 +03:00
9538816bef upstream: feat: Display incoming reports (XEP-0377) (93918a20d) 2026-03-31 19:57:34 +03:00
c03d3d499b upstream: fix: Use <body> tag for spam reporting (XEP-0377) (446f28ac3) 2026-03-31 19:57:34 +03:00
7de1b52962 upstream: docs: Improve help for /blocked (030c0b799) 2026-03-31 19:57:34 +03:00
66e84a2735 upstream: fix: Check for necessary pointers in omemo_receive_message (25d2cb012) 2026-03-31 19:57:34 +03:00
19c87e74f2 upstream: Simplify accounts_get_account(). (7c04b17af) 2026-03-31 19:54:07 +03:00
dd8b62f43d upstream: When renaming an account, copy all existing keys. (c61c72f2f) 2026-03-31 19:54:07 +03:00
5fc3b41707 upstream: Fix reconnect when no account has been set up yet. (f19acc215) 2026-03-31 19:54:07 +03:00
7215aacd5e upstream: cleanup: add a defensive check in cmd_process_input() (f74501e97) 2026-03-31 19:52:25 +03:00
23436ae0aa upstream: fix: fix redundant error reporting in http download (286e563fb) 2026-03-31 19:52:25 +03:00
56488dd2f9 upstream: fix: fix api_get_current_occupants() memory problems (1ec536d34) 2026-03-31 19:52:25 +03:00
034b789f1c upstream: fix: Fix Floating Point Exception in OMEMO session building (bc13a726b) 2026-03-31 19:51:20 +03:00
f6b2347811 upstream: fix: Ignore self-presence for untracked MUC rooms (9fb45b543) 2026-03-31 19:51:20 +03:00
a8716bf8a7 perf: optimize random data generation (upstream d9a8c579) 2026-03-31 19:50:30 +03:00
6831c4a192 perf: flush OMEMO store only after encrypting for all recipients (upstream cbe6dac4) 2026-03-31 19:48:20 +03:00
e8b8a8d52e fix: don't publish OMEMO keys if server doesn't support pubsub (upstream 01c781fc) 2026-03-31 19:46:19 +03:00
1bf7324970 fix: allow adding own JID to roster (upstream 4c731f52) 2026-03-31 19:39:28 +03:00
6730719355 feat: only request receipts when supported (upstream 421bb2e2) 2026-03-31 19:37:09 +03:00
e55b1b3e9d feat(ui): implement dynamic pad resizing (upstream 3e16ae1d) 2026-03-31 19:32:18 +03:00
d7decd7f17 fix: reduce OMEMO trust check frequency + trust indicators in titlebar (upstream 62458557) 2026-03-31 19:25:06 +03:00
626f67237d fix: OTR whitespace tag detection to prevent false positives (upstream cff26a97) 2026-03-31 19:23:09 +03:00
1ffff8de33 fix: check connection state before accepting command (upstream 613df864) 2026-03-31 19:21:05 +03:00
7bc5b3cf2e fix: exit gracefully on SIGTERM and SIGHUP (upstream 7c83c260) 2026-03-31 19:19:02 +03:00
bba6bc5f76 feat: sanitize illegal XML characters from outgoing messages (upstream 189050f3) 2026-03-31 19:16:57 +03:00
3fa6542fb8 fix: OMEMO startup initialization (upstream 79ff9bad) 2026-03-31 19:10:48 +03:00
46987dee77 fix: rare memleak in roster_list (upstream 2d7426fb) 2026-03-31 19:10:03 +03:00
d4112a3efb fix: NULL deref in cmd_omemo_trust/untrust (upstream 3d2a82ad) 2026-03-31 19:09:39 +03:00
1c95446084 fix: file handle leak in cmd_sendfile on OMEMO error (upstream 156b78ad) 2026-03-31 19:09:16 +03:00
7f7e8307f4 fix: potential null pointer deref in cmd_ac_complete (upstream 16080ab9) 2026-03-31 19:08:25 +03:00
fbcb49f6d0 fix: NULL deref and memleaks in OX logic (upstream 2406413e) 2026-03-31 19:03:43 +03:00
c7c4c8da78 fix: memleaks in tlscerts and console (upstream 7f5ae430) 2026-03-31 19:02:53 +03:00
d993155c30 fix: invalid free after /omemo gen (upstream fa1c4ddd) 2026-03-31 19:02:24 +03:00
1dc1785b4c fix: memory leaks when OMEMO keys not generated yet (upstream 1d508d59) 2026-03-31 19:01:43 +03:00
a9ee765c49 fix: memory leak and crash when id is NULL in iq_id_handler_add (upstream 0218ba26) 2026-03-31 18:56:02 +03:00
0b7ec1c5b6 fix: potential segfault in log_database_get_limits_info (upstream ff65db0b) 2026-03-31 18:52:45 +03:00
f84ed1bf6a perf(functests): speedup — profrc pre-baking, pty-close shutdown, parallel port pools
Replace 16 interactive UI setup commands with pre-written profrc file
containing [ui] and [notifications] sections (~1800ms saved per test).

Replace sleep(1) + blocking waitpid with close(pty fd) → SIGHUP →
polling waitpid(WNOHANG) → SIGTERM/SIGKILL fallback chain (~4900ms
saved per test).

Remove post-stbbr_start() and post-stbbr_stop() sleeps — bind+listen
completes synchronously before stbbr_start() returns, and
pthread_join() in stbbr_stop() guarantees socket cleanup (~200ms saved).

Add PORTS_PER_GROUP=50 isolated port ranges per test group to enable
safe parallel execution of 4 groups without port conflicts.
2026-03-12 18:20:35 +03:00
9ec01fa8cc fix: CWE-134 format string audit and compiler hardening
Security:
Fix CWE-134 in iq.c: user-controlled string passed as format argument
Add G_GNUC_PRINTF annotations to all variadic printf-like wrappers
in ui.h, log.h and http_common.h
Compiler flags (configure.ac):

Replace basic -Wformat/-Wformat-nonliteral with -Wformat=2
Add -Wextra, -Wnull-dereference, -Wpointer-arith,
-Wimplicit-function-declaration, -Wundef, -Wfloat-equal,
-Wredundant-decls, -Walloc-zero
Add -fstack-protector-strong, -fno-common, -D_FORTIFY_SOURCE=2
Add GCC-specific flags via AC_COMPILE_IFELSE: -Wlogical-op,
-Wduplicated-cond, -Wduplicated-branches, -Wstringop-overflow,
-Warray-bounds=2
Suppress noisy -Wextra sub-warnings: -Wno-unused-parameter,
-Wno-missing-field-initializers, -Wno-sign-compare,
-Wno-cast-function-type
Remove AM_CFLAGS/CFLAGS duplication
Bug fixes found by new warnings:

chatlog.c: non-MUCPM redact path passed resourcepart instead of NULL
rosterwin.c: merge duplicated if/else branches into single condition
omemo.c: redundant else-if in omemo_automatic_start; remove
unnecessary scope block and goto, use early return
console.c: pointer compared to integer 0 instead of NULL
stanza.c: increase pri_str/idle_str buffers from 10 to 12 bytes
(INT_MIN = -2147483648 needs 12 bytes including NUL)
vcard.c: NULL guard for filename before g_file_set_contents
api.c: broken log_warning() calls with extra format argument
Format mismatch fixes:

chatwin.c: Jid* → char* for %s
connection.c: %x → %lx for long flags
cmd_funcs.c: %d → %zu for size_t; cast gpointer to char* for %s
cmd_defs.c: %d → %u for g_list_length() return (guint)
iq.c: barejid → fulljid for from_jid
console.c, mucwin.c, privwin.c, account.c, omemo.c, presence.c:
gpointer → (char*) casts for %s
Const-correctness and cleanup:

database.c: const for type, query, sort variables
form.c/xmpp.h: const for form_set_value parameter
files.c: refactor to early return, eliminating NULL logfile path
muc.c/muc.h: remove meaningless top-level const on return type
common.c: const for URL string literal
Remove stale declarations: cons_show_desktop_prefs (ui.h),
connection_set_priority (connection.h),
omemo_devicelist_configure_and_request (omemo.h)
test_common.c: add currb NULL check to silence -Wnull-dereference
Tooling (check-cwe134.sh):

Reduce from 5 checks to 2 (checks 1-3 redundant with -Wformat=2)
Check 1: verify known wrappers have G_GNUC_PRINTF attribute
Check 2: auto-detect unannotated variadic printf-like functions
Match both const char* and const gchar* in variadic patterns

Author: jabber.developer2 <jabber.developer2@jabber.space>
2026-03-07 11:55:50 +01:00
1508f27e73 Merge branch 'ci/separate-build-step' 2026-03-05 18:36:13 +01:00
d4254db814 CI: Separate build and test steps 2026-03-04 23:04:51 +03:00
9e1b95a814 test(disco): remove disco_items_error_handling test
This test requires the fix from fix/xep-0030-disco-items-error-handling
branch. Moved there along with the source code fix.
2026-03-03 16:57:35 +01:00
24e1dac354 test(disco): add comprehensive XEP-0030 functional tests
Add 7 new tests for /disco command:
- disco_items_to_jid: query items to specific JID
- disco_info_empty_result: handle empty disco#info response
- disco_info_multiple_identities: multiple identity elements
- disco_info_without_name: identity without optional name attr
- disco_items_without_name: items without optional name attr
- disco_info_service_unavailable: error handling for info
- disco_items_error_handling: error handling for items (XEP-0030 §7)

The disco_items_error_handling test documents a bug where disco#items
errors are silently ignored (unlike disco#info which handles them).
This violates XEP-0030 Section 7 which requires error feedback to user.
2026-03-03 16:57:35 +01:00
f20a4da160 Add functional tests for /disco command (XEP-0030)
- Add 8 tests for disco info and disco items commands
- Fix XEP-0030 compliance bug: show message for empty disco#items results
- Tests cover: identity display, features, server/jid queries, error handling,
  items display, empty results, and connection requirement
2026-03-03 16:57:35 +01:00
663a959f9c test: add functional tests for autoping (XEP-0199)
- autoping_set_interval: verify /autoping set command
- autoping_set_zero_disables: verify disabling autoping
- autoping_timeout_set: verify /autoping timeout command
- autoping_timeout_zero_disables: verify disabling timeout
- autoping_sends_ping_after_interval: verify automatic ping IQ
- autoping_server_not_supporting_ping: verify error handling

Fast tests (command parsing) in Group 1, slow tests (timer-based) in Group 3.
2026-03-03 16:57:35 +01:00
31538580fb fix arch build 2026-02-18 17:39:25 +01:00
37ca2de308 ci: fix arch build 2026-02-17 16:30:52 +01:00
4fce333c9a fix(xmpp): show message for empty disco#items results (XEP-0030)
Per XEP-0030 section 3.1: 'if an entity has no associated items,
it MUST return an empty <query/> element.'

The client should display 'No service discovery items for X' when
receiving an empty result, not silently ignore it.

Previous version introduced in commit f28655c5c (2016-05-08) which added an early
return when child == NULL, preventing the message from being shown.
2026-02-11 01:10:55 +03:00
467222d0ca fix(ui,db): harden NULL handling, fix CWE-134, optimize iterations
security(CWE-134): fix format string injections + add CI check
fix(ui): subwindow lifecycle, newwin/newpad guards, fallback timestamps
fix(db): sqlite cleanup on failures, sqlite3_close_v2
fix(xmpp): queued_messages loop, barejid leak
perf(core): g_hash_table_iter_init instead of g_hash_table_get_keys
refactor(ui): CLAMP macro in _check_subwin_width
test: XEP-0012 and XEP-0045 functional tests

Author: jabber.developer2
Closes #58, #85
2026-02-06 19:27:40 +01:00
f8826b7c79 ci: improve CI stability with parallel builds and Valgrind
Major changes:
Run 4 build configurations in parallel with Valgrind on Linux
Add test failure detection verification (meta-test)
Port allocation per build to prevent conflicts in parallel runs
Add --coverage-only flag for dedicated coverage builds
Code quality:

Add TEST_GROUPS constant, CMOCKA patterns, helper functions
Organize ci-build.sh into sections
2026-02-02 17:47:05 +01:00
8353a29b4f fix(ci): remove insecure git clone flag, add ca-certificates
Remove -c http.sslverify=false from all git clones
(enables proper TLS verification, closes MITM risk).
Explicitly install ca-certificates in every CI Docker image.
2026-01-21 17:10:37 +01:00