security_agreements.c: Refactor the to_str functions and fix a few other bugs

* A static array of security mechanism type names was created.

* ast_sip_str_to_security_mechanism_type() was refactored to do
  a lookup in the new array instead of using fixed "if/else if"
  statments.

* security_mechanism_to_str() and ast_sip_security_mechanisms_to_str()
  were refactored to use ast_str instead of a fixed length buffer
  to store the result.

* ast_sip_security_mechanism_type_to_str was removed in favor of
  just referencing the new type name array.  Despite starting with
  "ast_sip_", it was a static function so removing it doesn't affect
  ABI.

* Speaking of "ast_sip_", several other static functions that
  started with "ast_sip_" were renamed to avoid confusion about
  their public availability.

* A few VECTOR free loops were replaced with AST_VECTOR_RESET().

* Fixed a meomry leak in pjsip_configuration.c endpoint_destructor
  caused by not calling ast_sip_security_mechanisms_vector_destroy().

* Fixed a memory leak in res_pjsip_outbound_registration.c
  add_security_headers() caused by not specifying OBJ_NODATA in
  an ao2_callback.

* Fixed a few ao2_callback return code misuses.

Resolves: #845
(cherry picked from commit 1872abe672)
This commit is contained in:
George Joseph
2024-08-17 12:13:40 -06:00
committed by Asterisk Development Team
parent c2ba4295b5
commit d7d63c830e
3 changed files with 66 additions and 61 deletions

View File

@@ -2434,6 +2434,7 @@ static void endpoint_destructor(void* obj)
ast_free(endpoint->contact_user);
ast_free_acl_list(endpoint->contact_acl);
ast_free_acl_list(endpoint->acl);
ast_sip_security_mechanisms_vector_destroy(&endpoint->security_mechanisms);
}
static int init_subscription_configuration(struct ast_sip_endpoint_subscription_configuration *subscription)