mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Fix unsafe uses of ast_context pointers.
Although ast_context_find, ast_context_find_or_create and ast_context_destroy perform locking of the contexts table, any context pointer can become invalid at any time that the contexts table is unlocked. This change adds locking around all complete operations involving these functions. Places where ast_context_find was followed by ast_context_destroy have been replaced with calls ast_context_destroy_by_name. ASTERISK-25094 #close Reported by: Corey Farrell Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa
This commit is contained in:
@@ -300,7 +300,21 @@ struct ast_context *ast_context_find_or_create(struct ast_context **extcontexts,
|
||||
void ast_merge_contexts_and_delete(struct ast_context **extcontexts, struct ast_hashtab *exttable, const char *registrar);
|
||||
|
||||
/*!
|
||||
* \brief Destroy a context (matches the specified context (or ANY context if NULL)
|
||||
* \brief Destroy a context by name
|
||||
*
|
||||
* \param context Name of the context to destroy
|
||||
* \param registrar who registered it
|
||||
*
|
||||
* You can optionally leave out the registrar parameter. It will find it
|
||||
* based on the context name.
|
||||
*
|
||||
* \retval -1 context not found
|
||||
* \retval 0 Success
|
||||
*/
|
||||
int ast_context_destroy_by_name(const char *context, const char *registrar);
|
||||
|
||||
/*!
|
||||
* \brief Destroy a context (matches the specified context or ANY context if NULL)
|
||||
*
|
||||
* \param con context to destroy
|
||||
* \param registrar who registered it
|
||||
|
Reference in New Issue
Block a user