mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-25 07:01:09 +00:00
Fix crash in AMI PJSIPShowEndpoint action.
If an AOR has no permanent contacts, then the permanent_contacts container is never allocated. This makes the code safe in the face of NULLs. I also changed the variable that counts contacts from "num" to "total_contacts" since there are now two variables that are indicate numbers of things. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@407988 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -349,7 +349,8 @@ static int format_ami_aor_handler(void *obj, void *arg, int flags)
|
|||||||
RAII_VAR(struct ast_str *, buf,
|
RAII_VAR(struct ast_str *, buf,
|
||||||
ast_sip_create_ami_event("AorDetail", ami), ast_free);
|
ast_sip_create_ami_event("AorDetail", ami), ast_free);
|
||||||
|
|
||||||
int num;
|
int total_contacts;
|
||||||
|
int num_permanent;
|
||||||
RAII_VAR(struct ao2_container *, contacts,
|
RAII_VAR(struct ao2_container *, contacts,
|
||||||
ast_sip_location_retrieve_aor_contacts(aor), ao2_cleanup);
|
ast_sip_location_retrieve_aor_contacts(aor), ao2_cleanup);
|
||||||
|
|
||||||
@@ -363,10 +364,13 @@ static int format_ami_aor_handler(void *obj, void *arg, int flags)
|
|||||||
ast_str_truncate(buf, -1);
|
ast_str_truncate(buf, -1);
|
||||||
ast_str_append(&buf, 0, "\r\n");
|
ast_str_append(&buf, 0, "\r\n");
|
||||||
|
|
||||||
num = ao2_container_count(contacts);
|
total_contacts = ao2_container_count(contacts);
|
||||||
ast_str_append(&buf, 0, "TotalContacts: %d\r\n", num);
|
num_permanent = aor->permanent_contacts ?
|
||||||
|
ao2_container_count(aor->permanent_contacts) : 0;
|
||||||
|
|
||||||
|
ast_str_append(&buf, 0, "TotalContacts: %d\r\n", total_contacts);
|
||||||
ast_str_append(&buf, 0, "ContactsRegistered: %d\r\n",
|
ast_str_append(&buf, 0, "ContactsRegistered: %d\r\n",
|
||||||
num - ao2_container_count(aor->permanent_contacts));
|
total_contacts - num_permanent);
|
||||||
ast_str_append(&buf, 0, "EndpointName: %s\r\n",
|
ast_str_append(&buf, 0, "EndpointName: %s\r\n",
|
||||||
ast_sorcery_object_get_id(endpoint));
|
ast_sorcery_object_get_id(endpoint));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user