core: Cleanup ast_get_hint() usage.

* manager.c:manager_state_cb() Fix potential use of uninitialized hint[]
if a hint does not exist for the requested extension.  Ran into this when
developing a testsuite test.  The AMI event ExtensionStatus came out with
the hint header value containing garbage.  The AMI event PresenceStatus
also had the same issue.

* manager.c:action_extensionstate() no need to completely initialize the
hint[].  Only initialize the first element.

* pbx.c:ast_add_hint() Remove unnecessary assignment.

* chan_sip.c: Eliminate an unneeded hint[] local variable.  We only care
about the return value of ast_get_hint() there.

Change-Id: Ia9a8786f01f93f1f917200f0a50bead0319af97b
This commit is contained in:
Richard Mudgett
2017-03-02 21:27:00 -06:00
parent 75ebd8f0d2
commit 4271c700f7
3 changed files with 18 additions and 14 deletions

View File

@@ -18306,10 +18306,11 @@ static enum sip_get_dest_result get_destination(struct sip_pvt *p, struct sip_re
/* If this is a subscription we actually just need to see if a hint exists for the extension */
if (req->method == SIP_SUBSCRIBE) {
char hint[AST_MAX_EXTENSION];
int which = 0;
if (ast_get_hint(hint, sizeof(hint), NULL, 0, NULL, p->context, uri) ||
(ast_get_hint(hint, sizeof(hint), NULL, 0, NULL, p->context, decoded_uri) && (which = 1))) {
if (ast_get_hint(NULL, 0, NULL, 0, NULL, p->context, uri)
|| (ast_get_hint(NULL, 0, NULL, 0, NULL, p->context, decoded_uri)
&& (which = 1))) {
if (!oreq) {
ast_string_field_set(p, exten, which ? decoded_uri : uri);
}