George Joseph
d3d9e30fab
pbx_functions: Save module pointer before calling read and write callbacks.
...
Before ast_func_read and ast_func_write call their respective read and write
callbacks for registered dialplan functions, they use the module pointer in
the registered ast_custom_function structure to increment the module use
count. They then decrement the usecount when the callback returns. This
prevents the providing module from being unloaded while there's a call using
the function.
Some modules, notably func_odbc, create and destroy dialplan functions based
on the contents of a config file. Since the ast_custom_function structure is
dynamically allocated, it could be destroyed on reload which means when the
module's read or write callback returns to the ast_func calls it would try to
decrement the usecount using the module pointer from an ast_custom_function
structure that has already been freed. Proper locking or reference counting
by the module can reduce the possibility of this happening but it can't
prevent it because it doesn't have control after its read or write callback
has returned to ast_func_read or ast_func_write.
To address this, ast_func_read, ast_func_read2 and ast_func_write save the
module pointer to a local variable before calling the module's callback,
then use the saved pointer to decrement the use count. The module
pointer will always be valid if the module is loaded regardless of the
state of the ast_custom_function structure.
Resolves : #1818
2026-04-22 17:50:23 +00:00
..
2025-02-20 21:46:27 +00:00
2025-12-03 13:58:26 +00:00
2025-02-20 21:46:27 +00:00
2025-02-20 21:46:27 +00:00
2026-02-18 13:43:30 +00:00
2025-02-20 21:46:27 +00:00
2023-12-08 13:11:48 +00:00
2023-04-03 07:13:57 -05:00
2025-02-20 21:46:27 +00:00
2023-12-08 13:11:48 +00:00
2026-01-26 19:42:17 +00:00
2020-06-02 11:35:07 -05:00
2024-09-25 18:27:15 +00:00
2025-02-20 21:46:27 +00:00
2021-12-02 15:02:09 -06:00
2025-02-20 21:46:27 +00:00
2019-09-23 07:35:48 -04:00
2021-12-02 15:02:09 -06:00
2021-12-02 15:02:09 -06:00
2021-12-02 15:02:09 -06:00
2025-09-11 14:47:32 +00:00
2024-09-09 23:17:15 +00:00
2026-02-18 19:30:12 +00:00
2021-12-02 15:02:09 -06:00
2025-11-12 22:10:44 +00:00
2025-02-20 21:46:27 +00:00
2021-12-02 15:02:09 -06:00
2025-08-15 15:59:23 +00:00
2025-01-16 15:32:48 +00:00
2026-03-31 16:54:57 +00:00
2026-02-18 13:43:30 +00:00
2025-08-06 15:37:46 +00:00
2026-03-02 16:43:24 +00:00
2026-03-17 16:15:36 +00:00
2025-10-20 13:22:48 +00:00
2026-03-10 13:48:52 +00:00
2025-11-12 21:27:16 +00:00
2026-01-23 15:25:39 +00:00
2025-07-01 14:02:33 +00:00
2026-01-23 15:25:39 +00:00
2025-11-12 21:27:16 +00:00
2026-01-13 16:03:24 +00:00
2023-09-22 16:10:05 +00:00
2024-02-12 18:46:27 +00:00
2025-10-02 14:43:01 +00:00
2026-02-18 13:43:30 +00:00
2022-03-23 17:13:03 -05:00
2025-12-01 14:05:53 +00:00
2025-12-01 14:05:53 +00:00
2021-12-02 15:02:09 -06:00
2020-04-15 13:56:40 -05:00
2022-07-07 08:19:14 -05:00
2025-02-20 21:46:27 +00:00
2025-10-22 15:47:14 +00:00
2025-12-29 19:37:31 +00:00
2026-02-18 13:43:30 +00:00
2026-02-18 13:43:30 +00:00
2021-12-02 10:37:38 -06:00
2020-06-10 09:33:28 -05:00
2021-12-02 15:02:09 -06:00
2021-12-02 10:37:38 -06:00
2020-04-28 13:05:55 -05:00
2025-02-20 21:46:27 +00:00
2024-10-10 15:34:25 +00:00
2026-03-03 22:07:20 +00:00
2026-01-05 14:46:21 +00:00
2026-01-05 14:46:21 +00:00
2026-02-17 13:31:24 +00:00
2026-02-18 13:43:30 +00:00
2024-08-12 15:21:31 +00:00
2025-02-20 21:46:27 +00:00
2025-09-22 17:39:09 +00:00
2026-03-03 21:51:46 +00:00
2025-02-20 21:46:27 +00:00
2024-02-12 18:46:27 +00:00
2021-12-02 15:02:09 -06:00
2021-01-04 05:00:58 -06:00
2024-02-12 18:46:27 +00:00
2025-05-20 13:54:02 +00:00
2026-02-25 13:25:14 +00:00
2021-11-15 17:33:27 -06:00
2026-03-05 12:52:37 +00:00
2024-02-12 18:46:27 +00:00
2024-02-12 18:46:27 +00:00
2021-12-02 15:02:09 -06:00
2025-10-28 12:44:26 +00:00
2025-04-02 12:16:35 +00:00
2025-07-30 15:59:21 +00:00
2025-01-29 14:17:54 +00:00
2020-10-02 12:58:18 -05:00
2025-01-29 14:17:54 +00:00
2026-02-18 13:43:30 +00:00
2026-04-07 17:18:36 +00:00
2025-01-29 14:17:54 +00:00
2025-10-20 13:22:48 +00:00
2025-02-20 21:46:27 +00:00
2025-01-29 14:17:54 +00:00
2026-03-17 18:17:28 +00:00
2025-04-21 13:29:27 +00:00
2021-12-02 15:02:09 -06:00
2025-02-20 21:46:27 +00:00
2021-12-02 15:02:09 -06:00
2025-01-29 14:17:54 +00:00
2021-12-02 10:37:38 -06:00
2025-07-30 15:59:21 +00:00
2019-03-11 11:39:35 -03:00
2026-03-03 18:55:45 +00:00
2025-09-04 15:03:40 +00:00
2026-04-22 17:50:23 +00:00
2021-12-02 15:02:09 -06:00
2021-08-06 09:04:28 -05:00
2021-12-02 15:02:09 -06:00
2026-02-18 13:43:30 +00:00
2026-03-23 18:59:54 +00:00
2025-02-20 21:46:27 +00:00
2025-07-30 15:59:21 +00:00
2025-01-29 14:17:54 +00:00
2025-02-11 22:05:40 +00:00
2026-03-10 13:48:52 +00:00
2026-02-25 13:25:14 +00:00
2022-01-21 10:06:57 -06:00
2025-01-29 14:17:54 +00:00
2025-09-16 17:21:23 +00:00
2025-09-16 17:21:23 +00:00
2021-12-02 15:02:09 -06:00
2021-11-15 17:33:27 -06:00
2025-09-30 13:50:30 +00:00
2021-12-02 15:02:09 -06:00
2025-03-07 16:53:11 +00:00
2019-03-11 11:39:35 -03:00
2021-11-18 14:46:42 -06:00
2025-10-20 13:22:48 +00:00
2025-01-29 14:17:54 +00:00
2025-10-13 15:34:12 +00:00
2023-06-09 18:19:49 +00:00
2022-05-09 08:20:46 -05:00
2025-01-29 14:17:54 +00:00
2026-01-26 20:33:21 +00:00
2026-02-26 15:51:02 +00:00
2024-10-17 15:20:36 +00:00
2025-06-02 16:35:27 +00:00
2025-02-20 21:46:27 +00:00
2025-12-16 17:03:43 +00:00
2026-02-18 13:43:30 +00:00
2025-04-21 13:29:27 +00:00
2021-12-02 15:02:09 -06:00
2021-09-08 19:10:54 -05:00
2025-01-02 14:52:12 +00:00
2025-12-04 16:13:02 +00:00
2022-03-24 12:00:58 -05:00
2024-02-28 13:03:19 +00:00
2025-02-20 21:46:27 +00:00
2023-11-14 20:51:34 +00:00
2023-03-01 09:49:39 -06:00
2026-02-25 13:25:14 +00:00
2021-12-02 15:02:09 -06:00
2026-02-26 15:51:02 +00:00
2026-03-19 16:41:21 +00:00