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
...
CI Code / Check spelling (pull_request) Successful in 18s
CI Code / Check coding style (pull_request) Successful in 32s
CI Code / Code Coverage (pull_request) Successful in 2m46s
CI Code / Linux (debian) (pull_request) Successful in 4m30s
CI Code / Linux (ubuntu) (pull_request) Successful in 4m29s
CI Code / Linux (arch) (pull_request) Successful in 4m44s
CI Code / Check spelling (push) Successful in 18s
CI Code / Check coding style (push) Successful in 33s
CI Code / Code Coverage (push) Successful in 3m4s
CI Code / Linux (ubuntu) (push) Successful in 4m29s
CI Code / Linux (debian) (push) Successful in 4m33s
CI Code / Linux (arch) (push) Successful in 4m48s
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
...
CI Code / Check spelling (push) Successful in 20s
CI Code / Check coding style (push) Successful in 36s
CI Code / Code Coverage (push) Successful in 5m38s
CI Code / Linux (ubuntu) (push) Successful in 7m1s
CI Code / Linux (debian) (push) Successful in 7m5s
CI Code / Linux (arch) (push) Successful in 7m19s
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'
CI Code / Check spelling (push) Successful in 21s
CI Code / Check coding style (push) Successful in 37s
CI Code / Code Coverage (push) Successful in 5m35s
CI Code / Linux (debian) (push) Successful in 6m56s
CI Code / Linux (ubuntu) (push) Successful in 7m2s
CI Code / Linux (arch) (push) Successful in 7m24s
2026-03-05 18:36:13 +01:00
d4254db814
CI: Separate build and test steps
CI Code / Check coding style (pull_request) Successful in 32s
CI Code / Check spelling (pull_request) Successful in 24s
CI Code / Code Coverage (pull_request) Successful in 4m46s
CI Code / Linux (debian) (pull_request) Successful in 6m5s
CI Code / Linux (ubuntu) (pull_request) Successful in 6m11s
CI Code / Linux (arch) (pull_request) Successful in 6m25s
2026-03-04 23:04:51 +03:00
9e1b95a814
test(disco): remove disco_items_error_handling test
...
CI Code / Check spelling (pull_request) Successful in 22s
CI Code / Check coding style (pull_request) Successful in 40s
CI Code / Linux (debian) (pull_request) Successful in 6m59s
CI Code / Linux (arch) (pull_request) Successful in 7m21s
CI Code / Linux (ubuntu) (pull_request) Successful in 7m13s
CI Code / Code Coverage (pull_request) Successful in 10m59s
CI Code / Check spelling (push) Successful in 20s
CI Code / Check coding style (push) Successful in 36s
CI Code / Code Coverage (push) Successful in 5m43s
CI Code / Linux (ubuntu) (push) Successful in 7m9s
CI Code / Linux (debian) (push) Successful in 10m5s
CI Code / Linux (arch) (push) Successful in 12m0s
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
CI Code / Check spelling (pull_request) Successful in 17s
CI Code / Check coding style (pull_request) Successful in 28s
CI Code / Linux (debian) (pull_request) Successful in 6m21s
CI Code / Linux (ubuntu) (pull_request) Successful in 8m59s
CI Code / Code Coverage (pull_request) Successful in 8m25s
CI Code / Linux (arch) (pull_request) Successful in 10m31s
CI Code / Check spelling (push) Successful in 17s
CI Code / Check coding style (push) Successful in 31s
CI Code / Linux (debian) (push) Successful in 6m29s
CI Code / Linux (ubuntu) (push) Successful in 6m33s
CI Code / Code Coverage (push) Successful in 9m3s
CI Code / Linux (arch) (push) Successful in 10m31s
2026-02-18 17:39:25 +01:00
37ca2de308
ci: fix arch build
CI Code / Check spelling (pull_request) Successful in 20s
CI Code / Check coding style (pull_request) Successful in 34s
CI Code / Linux (debian) (pull_request) Successful in 6m21s
CI Code / Linux (ubuntu) (pull_request) Successful in 6m25s
CI Code / Code Coverage (pull_request) Successful in 13m14s
CI Code / Linux (arch) (pull_request) Successful in 7m26s
CI Code / Check spelling (push) Successful in 19s
CI Code / Check coding style (push) Successful in 30s
CI Code / Linux (debian) (push) Successful in 6m26s
CI Code / Linux (ubuntu) (push) Successful in 6m27s
CI Code / Code Coverage (push) Has been cancelled
CI Code / Linux (arch) (push) Has been cancelled
2026-02-17 16:30:52 +01:00
4fce333c9a
fix(xmpp): show message for empty disco#items results (XEP-0030)
...
CI Code / Check spelling (pull_request) Successful in 23s
CI Code / Check coding style (pull_request) Successful in 34s
CI Code / Code Coverage (pull_request) Successful in 4m45s
CI Code / Linux (debian) (pull_request) Successful in 6m10s
CI Code / Linux (ubuntu) (pull_request) Successful in 6m17s
CI Code / Linux (arch) (pull_request) Successful in 6m24s
CI Code / Check spelling (push) Successful in 17s
CI Code / Check coding style (push) Successful in 30s
CI Code / Linux (debian) (push) Successful in 6m16s
CI Code / Linux (ubuntu) (push) Successful in 6m22s
CI Code / Linux (arch) (push) Successful in 6m27s
CI Code / Code Coverage (push) Successful in 9m41s
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
...
CI Code / Code Coverage (push) Failing after 10m34s
CI Code / Check spelling (push) Failing after 10m47s
CI Code / Check coding style (push) Failing after 11m4s
CI Code / Linux (ubuntu) (push) Failing after 11m19s
CI Code / Linux (debian) (push) Failing after 11m28s
CI Code / Linux (arch) (push) Failing after 11m38s
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
...
CI Code / Check spelling (push) Successful in 20s
CI Code / Check coding style (push) Successful in 33s
CI Code / Code Coverage (push) Successful in 4m47s
CI Code / Linux (debian) (push) Successful in 6m9s
CI Code / Linux (ubuntu) (push) Successful in 6m13s
CI Code / Linux (arch) (push) Successful in 6m19s
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
...
CI Code / Check spelling (pull_request) Successful in 22s
CI Code / Check coding style (pull_request) Successful in 34s
CI Code / Code Coverage (pull_request) Successful in 17m45s
CI Code / Linux (ubuntu) (pull_request) Successful in 18m1s
CI Code / Linux (debian) (pull_request) Successful in 18m17s
CI Code / Linux (arch) (pull_request) Successful in 19m0s
CI Code / Check spelling (push) Successful in 19s
CI Code / Check coding style (push) Successful in 31s
CI Code / Code Coverage (push) Successful in 15m28s
CI Code / Linux (ubuntu) (push) Successful in 18m11s
CI Code / Linux (debian) (push) Successful in 18m22s
CI Code / Linux (arch) (push) Successful in 20m51s
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
85c817ee8c
ci: speed up builds 4x with parallel tests, coverage, and ccache
...
CI Code / Check spelling (push) Successful in 18s
CI Code / Check coding style (push) Successful in 31s
CI Code / Code Coverage (push) Successful in 15m25s
CI Code / Linux (debian) (push) Successful in 15m57s
CI Code / Linux (ubuntu) (push) Successful in 16m0s
CI Code / Linux (arch) (push) Successful in 16m6s
Split functional tests into 4 parallel groups and add check-functional-parallel target (~3x faster CI runs).
Add branch-aware LCOV coverage reporting with new --enable-coverage option and lcov summary in CI pipeline.
Enable ccache via -C configure flag for faster recompilations.
Install lcov in all Docker images and use --depth 1 git clones + parallel make -j$(nproc) for quicker container builds.
Update CONTRIBUTING.md with instructions for parallel test groups and adding new ones.
All changes are tightly related CI/performance improvements developed in sequence. No external service uploads (e.g. Codecov skipped due to Gitea incompatibility).
2026-01-21 16:35:17 +01:00
a90eef1cb2
docs: update CONTRIBUTING.md to clarify functional test guidelines
CI Code / Check coding style (pull_request) Successful in 29s
CI Code / Check spelling (pull_request) Successful in 17s
CI Code / Linux (debian) (pull_request) Successful in 1h5m29s
CI Code / Check coding style (push) Successful in 31s
CI Code / Check spelling (push) Successful in 17s
CI Code / Linux (arch) (push) Successful in 1h3m52s
CI Code / Linux (ubuntu) (pull_request) Successful in 1h4m41s
CI Code / Linux (arch) (pull_request) Successful in 1h7m14s
CI Code / Linux (debian) (push) Successful in 1h4m50s
CI Code / Linux (ubuntu) (push) Successful in 1h5m37s
2026-01-07 11:46:40 +01:00