]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip.c: Fix endpoint identifier registration name search.
authorRichard Mudgett <rmudgett@digium.com>
Thu, 4 Jan 2018 23:42:59 +0000 (17:42 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Sat, 6 Jan 2018 00:08:12 +0000 (18:08 -0600)
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

res/res_pjsip.c

index c3deb98b1f01332e252df24907417dd3a0d57bee..654f4ba4ea7339aeefb888e2eb19d0834a7bb59f 100644 (file)
@@ -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;