72f4f186da
merge: sync upstream profanity-im/profanity
...
CI Code / Check spelling (push) Successful in 18s
CI Code / Check coding style (push) Successful in 34s
CI Code / Code Coverage (push) Successful in 2m36s
CI Code / Linux (debian) (push) Successful in 4m41s
CI Code / Linux (ubuntu) (push) Successful in 4m52s
CI Code / Linux (arch) (push) Successful in 5m40s
Sync with upstream profanity-im/profanity.
Major upstream changes incorporated:
Memory management
- Replace malloc+memset with g_new0 throughout codebase
- Adopt auto_gchar / auto_gcharv / auto_gerror / auto_jid cleanup macros
- Replace free() with g_free() for GAlloc'd memory
Editor rewrite
- Remove pthread-based async editor; use GChildWatch callback API
- New launch_editor(initial_content, callback, user_data) interface
- Proper signal handling (SIGINT, SIGTSTP, SIGPIPE reset in child)
- ui_suspend()/ui_resume() integration for TTY management
OMEMO improvements
- Dual backend support: libsignal-protocol-c and libomemo-c
- Proper pre-key removal after use (XEP-0384 compliance)
- Automatic pre-key regeneration when store drops below threshold
- New functions: omemo_is_device_active(), omemo_is_jid_trusted()
- omemo_get_jid_untrusted_fingerprints() for better error messages
- Fingerprint notifications on new device identity discovery
- Deterministic pre-key ID generation tracking max_pre_key_id
- omemo_trust_changed() UI updates on trust state changes
JID validation
- RFC 6122-compliant validation in jid_is_valid()
- Character-level checks (RFC 6122 forbidden chars: & ' / : < > @)
- Length limits: 1023 per component, 3071 total
- New jid_is_valid_user_jid() for user vs. service JID distinction
Database
- Schema migration v3: UNIQUE constraint on archive_id for deduplication
- Triggers for corrected message tracking (replaces_db_id / replaced_by_db_id)
- db_history_result_t return type, _truncate_datetime_suffix()
UI / console
- win_warn_needed() / win_warn_sent() warning deduplication hash table
- PAD_MIN_HEIGHT dynamic pad sizing with PAD_THRESHOLD auto-cleanup
- Spellcheck integration in input field with Unicode word detection
- cons_spellcheck_setting() for /settings ui output
- /[command]? shortcut for command help
Account config
- Account name sanitization for GKeyFile special chars ([ ] = # \n \r)
- Replace popen() with g_spawn_sync() for eval_password
- TLS policy: add "direct" option alongside legacy
Connection
- Port validation with g_assert (0–65535)
- SHA-256 certificate fingerprint support (XMPP_CERT_PUBKEY_FINGERPRINT_SHA256)
- "direct" TLS policy alias for legacy SSL
Common utilities
- str_xml_sanitize() for XML 1.0 illegal character removal
- string_matches_one_of() with formatted error messages
- valid_tls_policy_option() helper
- prof_date_time_format_iso8601() utility
- Improved strip_arg_quotes() with backslash unescaping
- prof_occurrences() uses g_slist_prepend + reverse for performance
PGP / OX
- Proper GPGME resource cleanup with goto-cleanup pattern
- g_string_free(xmppuri) leak fix in _ox_key_lookup
CSV export
- Use GString + g_file_set_contents instead of raw write() syscalls
Tests
- Restructured into subdirectories: command/, config/, xmpp/, ui/, omemo/, otr/, pgp/
- New test_cmd_ac.c for autocompleter unit tests
- Updated stubs for new UI suspend/resume functions
License headers
- Migrate to SPDX-3.0 identifiers (GPL-3.0-or-later WITH OpenSSL-exception)
────────────────────────────────────────────────────
cproof-specific preservations:
- XEP-0308 LMC: replace_id ?: id logic in message/stanza/omemo
- Force encryption: cmd_force_encryption, test_forced_encryption
- CWE-134: format string protection (cons_show("%s", ...))
- y_start_pos-based paging in window.c
- db_history_result_t return type, _truncate_datetime_suffix()
Merge-time fixes:
- common.c: format-security (-Werror) — cons_show(errmsg) → cons_show("%s", errmsg)
- database.c: null-deref guard — !msg->timestamp → msg && !msg->timestamp
- console.c: implicit size_t → int cast — (int)(maxlen + 1)
- tlscerts.c: %d for size_t — %zu
Build system:
- Kept autotools (Makefile.am, configure.ac); upstream uses Meson
- Restored deleted files: bootstrap.sh, autogen.sh, ax_valgrind_check.m4, configure-debug
- Updated Makefile.am test paths for subdirectory structure
- Added test_cmd_ac, test_forced_encryption to test sources
Functional tests:
- Use cproof version; upstream requires stbbr_for_xmlns from updated stabber
- Not yet available in devs/stabber fork
Closes #64
Merge author: jabber.developer2
Commits authors:
Michael Vetter <jubalh@iodoru.org >
& Steffen Jaeckel <s@jaeckel.eu >
2026-05-26 17:48:14 +00:00
266f5aa046
feat(api): add get_current_window call
...
CI API Docs / Test C API Documentation Generation (pull_request) Successful in 27s
CI API Docs / Test Python API Documentation Generation (pull_request) Successful in 29s
CI Code / Check coding style (pull_request) Successful in 35s
CI Code / Check spelling (pull_request) Successful in 19s
CI Code / Linux (debian) (pull_request) Successful in 13m22s
CI Code / Linux (arch) (pull_request) Successful in 13m27s
CI Code / Linux (ubuntu) (pull_request) Successful in 13m36s
CI API Docs / Test C API Documentation Generation (push) Successful in 1m2s
CI Code / Check spelling (push) Has been cancelled
CI Code / Check coding style (push) Has been cancelled
CI Code / Linux (ubuntu) (push) Has been cancelled
CI Code / Linux (debian) (push) Has been cancelled
CI API Docs / Test Python API Documentation Generation (push) Successful in 1m8s
CI Code / Linux (arch) (push) Successful in 9m24s
Add prof_get_current_window API to retrieve the title of the currently active window, matching the titlebar display.
The feature is especially useful to track currently used plugin window.
2025-10-20 19:00:48 +02:00
Steffen Jaeckel
06f5c2670e
PyEval_InitThreads() is deprecated
...
`Py_Initialize()` does it since 3.7, it's a noop and deprecated since 3.9.
https://docs.python.org/3/c-api/init.html#c.PyEval_InitThreads
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu >
2025-01-28 16:43:13 +01:00
Hanspeter Portner
cb395b7c09
Make muc_nick return a const char* const
...
In the documentation of the `muc_nick` function we can read:
> The nickname is owned by the chat room and should not be modified or freed
We should reflect that in the return type and `strdup` the value for the
plugin API.
Fixes: https://github.com/profanity-im/profanity/issues/2013
2025-01-26 18:16:14 +01:00
Steffen Jaeckel
dc0f2acb9a
Simplify usage of roster_get_display_name()
...
Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de >
2023-12-12 18:27:11 +01:00
Đoàn Trần Công Danh
5a72fefe89
plugin: python: fix build for Python 3.11
...
From Python 3.11, PyFrameObject has been changed into opaque struct.
We need to access those fields via API.
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com >
2022-09-24 12:49:12 +07:00
j.r
5676159aa5
Fix python executed during configure
...
Previously it relied on AX_PYTHON_DEVEL, which in turn executes
python-config to get the build flags. However this does not work while
cross compiling because we can't execute the python-config build for the
target platform. To circumvent this problem the python build flags are
now queried via pkgconfig, which has the drawback of not having some
extra build flags, but they do not seem to be needed.
I tested this patch with the termux build system and it build without
their existing hack of injecting python after the configure step. I also
tested non cross compile build on Arch Linux and it also still works.
Fixes #851
2022-02-18 19:45:31 +01:00
Sergei Trofimovich
f0a39a4b66
python_api.c: enlarge c_arguments array to avoid OOB write
...
Code below explicitly refers past `args_len`th element:
c_arguments[args_len][0] = NULL;
c_arguments[args_len][1] = NULL;
Let's always allocate space for `NULL`. Noticed by Steffen Jaeckel.
2021-11-26 07:54:01 +00:00
Sergei Trofimovich
a77a57a6a4
src/plugins/python_api.c: drop redundant NULL pointer check
...
gcc-12 detects redundant check against array of arrays as:
src/plugins/python_api.c: In function ‘python_api_register_command’:
src/plugins/python_api.c:199:31: error: the comparison will always evaluate as ‘true’ for the address of ‘c_arguments’ will never be NULL [-Werror=address]
199 | while (c_arguments[i] != NULL && c_arguments[i][0] != NULL) {
| ^~
src/plugins/python_api.c:161:15: note: ‘c_arguments’ declared here
161 | char* c_arguments[args_len == 0 ? 0 : args_len + 1][2];
| ^~~~~~~~~~~
2021-11-18 22:29:11 +00:00
Dustin Lagoy
2350a94c44
Add plugin get_barejid_from_roster function
2021-04-29 13:50:57 -04:00
Dustin Lagoy
802442fffc
Change nick to name in api to match convention
...
Change all instances of *get_nick_from_roster to *get_name_from_roster
to match the convention of names in the roster itself.
2021-04-28 09:32:20 -04:00
Dustin Lagoy
ed4d2fcfb2
Add plugin prof_get_nick_from_roster function
2021-04-28 09:17:02 -04:00
Michael Vetter
a2726b6a7d
Apply coding style
2020-07-07 14:18:57 +02:00
Michael Vetter
a4cadf78fa
Revert "Apply coding style"
...
This reverts commit 9b55f2dec0 .
Sorting the includes creates some problems.
2020-07-07 13:53:30 +02:00
Michael Vetter
9b55f2dec0
Apply coding style
...
Regards https://github.com/profanity-im/profanity/issues/1396
2020-07-07 09:43:28 +02:00
Michael Vetter
46fd7150e5
Add vim modeline
2019-11-13 12:11:05 +01:00
Dmitry Podgorny
69bba3ea4e
plugins/python: fix double _XOPEN_SOURCE definition
...
ncursesw defines _XOPEN_SOURCE macro via command-line. In particular, it
is defined in ncursesw.pc and extracted via pkg-config. From other side,
Python defines the same macro unconditionally in pyconfig.h. Python-3.x
defines the macro with value different than ncursesw does. In turn, this
causes a warning that the macro is redefined. And warnings are treated
as errors.
Since both entities define the mecro unconditionally, we can't simply
reorder headers as Python developers suggest. So, undefine the macro
just before the <Python.h> to fix this silly issue.
2019-10-15 12:30:38 +00:00
Michael Vetter
d3dd95963e
Sort includes in python_api.c
2019-10-07 15:53:17 +02:00
Michael Vetter
e75cc41164
Fix double initialization of loop iterator
2019-07-22 14:02:33 +02:00
Michael Vetter
706af9a900
Update copyright to include 2019
2019-01-22 11:31:45 +01:00
James Booth
250e972b7a
Update copyright
2018-01-21 15:00:02 +00:00
James Booth
68a3daedb9
Update Copyright
2017-01-28 17:24:22 +00:00
James Booth
7090f85d85
Add chat and room show calls to plugins api
2017-01-21 20:23:28 +00:00
James Booth
9cfd17821c
Allow room display properies to be set by plugins
2017-01-20 23:26:14 +00:00
James Booth
c8874cd2e0
Allow chat prefix char to be set by plugins
2017-01-20 21:03:55 +00:00
James Booth
1b25aa84cb
Add titlebar encryption text to plugins api
2017-01-19 22:33:29 +00:00
James Booth
fccf56be10
Add prof.encryption_reset to Plugins API
...
issue #885
2017-01-18 22:46:29 +00:00
James Booth
8008d8c3c6
Add get_room_nick to plugins api
2016-11-06 23:01:16 +00:00
James Booth
dcc2123ec4
Allow filepath autocompletion in plugins
...
closes #858
2016-10-10 22:28:23 +01:00
James Booth
a65403c54a
Remove disco features added by plugins on unload
2016-08-11 23:20:59 +01:00
James Booth
efeb2fcfcd
Rename plugins settings functions
2016-08-07 00:16:57 +01:00
James Booth
b2508be8f4
Return boolean on prof_settings_string_list_remove_all()
2016-08-01 22:09:25 +01:00
James Booth
b72bb3a157
Remove log debugs
2016-08-01 21:59:12 +01:00
James Booth
2518aa5078
Add string lists settings to plugins
2016-08-01 21:34:38 +01:00
James Booth
943e91268c
Fix memory leaks
2016-07-25 21:56:38 +01:00
James Booth
130e753aac
Use Py_RETURN_NONE
2016-07-25 21:13:47 +01:00
James Booth
8f9f018d5a
Free python_str_or_unicode_to_string results
2016-07-25 00:41:34 +01:00
James Booth
cbfc34f7c3
Remove debug on plugin win create
2016-07-24 22:32:39 +01:00
James Booth
0a57c4de78
Tidy headers
2016-07-24 15:43:51 +01:00
James Booth
7c593c2780
Reorder headers
2016-07-24 02:16:57 +01:00
James Booth
b48a3d2f6a
Python plugins: Free string values
2016-07-24 01:53:13 +01:00
James Booth
47dfa6c3fc
Merge branch 'master' into python3
...
Conflicts:
.gitignore
2016-07-24 01:22:29 +01:00
James Booth
e8fc80f5c1
Update GPL link in headers
2016-07-24 01:14:49 +01:00
James Booth
d44472049b
Allow str and unicode in python api
2016-07-24 01:09:18 +01:00
James Booth
376811a960
Tidy python3 conditional code
2016-07-19 01:02:33 +01:00
James Booth
71ccfcc09f
Add python_init_prof()
2016-07-18 23:24:26 +01:00
James Booth
7d742f704f
Fix prof module init for python3
2016-07-18 01:27:23 +01:00
James Booth
ace2715cf7
Added PYTHON3 define
2016-07-14 00:00:46 +01:00
James Booth
fd218ac3e4
Pass plugin name to all autocompleter functions
2016-07-04 23:14:08 +01:00
James Booth
71879a3f64
Free plugins commands on quit
2016-07-04 00:41:29 +01:00