Skip to content
Snippets Groups Projects
Commit 705e6c04 authored by Richard Mudgett's avatar Richard Mudgett
Browse files

res_pjsip.c: Fix endpoint identifier registration name search.

If an endpoint identifier name in the endpoint_identifier_order list is a
prefix to the identifier we are registering, we could install it in the
wrong position of the list.

Assuming
endpoint_identifier_order=username,ip,anonymous

then registering the "ip_only" identifier would put the identifier in the
wrong position of the priority list.

* Fix incorrect strncmp() string prefix matching.

Change-Id: Ib8819ec4b811da8a27419fd93528c54d34f01484
parent 4eccf697
No related branches found
No related tags found
No related merge requests found
......@@ -2680,13 +2680,13 @@ int ast_sip_register_endpoint_identifier_with_name(struct ast_sip_endpoint_ident
id_list_item = ast_calloc(1, sizeof(*id_list_item));
if (!id_list_item) {
ast_log(LOG_ERROR, "Unabled to add endpoint identifier. Out of memory.\n");
ast_log(LOG_ERROR, "Unable to add endpoint identifier. Out of memory.\n");
return -1;
}
id_list_item->identifier = identifier;
id_list_item->name = name;
ast_debug(1, "Register endpoint identifier %s (%p)\n", name, identifier);
ast_debug(1, "Register endpoint identifier %s(%p)\n", name ?: "", identifier);
if (ast_strlen_zero(name)) {
/* if an identifier has no name then place in front */
......@@ -2709,7 +2709,8 @@ int ast_sip_register_endpoint_identifier_with_name(struct ast_sip_endpoint_ident
id_list_item->priority = 0;
while ((current = strchr(current, ','))) {
++id_list_item->priority;
if (!strncmp(prev, name, current - prev)) {
if (!strncmp(prev, name, current - prev)
&& strlen(name) == current - prev) {
break;
}
prev = ++current;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment