From 3c72064d3fdc246ead752bb00b74620a4c05186f Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Fri, 17 Nov 2017 10:57:54 -0500 Subject: res_pjsip: Use reasonable buffer lengths for endpoint identification Domains themselves can be up to 255 characters long (per RFC 1035), so our current buffer sizes are wholly inadequate for many use cases. Change-Id: If3f30a68307f1365a1fe06bc4b854c62842c9292 --- res/res_pjsip_endpoint_identifier_anonymous.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'res/res_pjsip_endpoint_identifier_anonymous.c') diff --git a/res/res_pjsip_endpoint_identifier_anonymous.c b/res/res_pjsip_endpoint_identifier_anonymous.c index b93133824..2a47cbe3f 100644 --- a/res/res_pjsip_endpoint_identifier_anonymous.c +++ b/res/res_pjsip_endpoint_identifier_anonymous.c @@ -56,9 +56,11 @@ static int find_transport_state_in_use(void *obj, void *arg, int flags) return 0; } +#define DOMAIN_NAME_LEN 255 + static struct ast_sip_endpoint *anonymous_identify(pjsip_rx_data *rdata) { - char domain_name[64], id[AST_UUID_STR_LEN]; + char domain_name[DOMAIN_NAME_LEN + 1]; struct ast_sip_endpoint *endpoint; RAII_VAR(struct ast_sip_domain_alias *, alias, NULL, ao2_cleanup); RAII_VAR(struct ao2_container *, transport_states, NULL, ao2_cleanup); @@ -70,6 +72,8 @@ static struct ast_sip_endpoint *anonymous_identify(pjsip_rx_data *rdata) } if (!ast_sip_get_disable_multi_domain()) { + char id[sizeof("anonymous@") + DOMAIN_NAME_LEN]; + /* Attempt to find the endpoint given the name and domain provided */ snprintf(id, sizeof(id), "anonymous@%s", domain_name); if ((endpoint = ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "endpoint", id))) { -- cgit v1.2.3