diff options
-rw-r--r-- | channels/chan_iax2.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index d50b78b18..1d404c3fb 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -4787,6 +4787,7 @@ static int authenticate_request(struct chan_iax2_pvt *p) struct iax2_user *user = NULL; struct iax_ie_data ied; int res = -1, authreq_restrict = 0; + char challenge[10]; memset(&ied, 0, sizeof(ied)); @@ -4815,7 +4816,8 @@ static int authenticate_request(struct chan_iax2_pvt *p) iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods); if (p->authmethods & (IAX_AUTH_MD5 | IAX_AUTH_RSA)) { - ast_string_field_build(p,challenge, "%d", (int)ast_random()); + snprintf(challenge, sizeof(challenge), "%d", (int)ast_random()); + ast_string_field_set(p, challenge, challenge); /* snprintf(p->challenge, sizeof(p->challenge), "%d", (int)ast_random()); */ iax_ie_append_str(&ied, IAX_IE_CHALLENGE, p->challenge); } @@ -5644,6 +5646,7 @@ static int registry_authrequest(const char *name, int callno) { struct iax_ie_data ied; struct iax2_peer *p; + char challenge[10]; /* SLD: third call to find_peer in registration */ p = find_peer(name, 1); if (p) { @@ -5651,7 +5654,8 @@ static int registry_authrequest(const char *name, int callno) iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods); if (p->authmethods & (IAX_AUTH_RSA | IAX_AUTH_MD5)) { /* Build the challenge */ - ast_string_field_build(iaxs[callno], challenge, "%d", (int)ast_random()); + snprintf(challenge, sizeof(challenge), "%d", (int)ast_random()); + ast_string_field_set(iaxs[callno], challenge, challenge); /* snprintf(iaxs[callno]->challenge, sizeof(iaxs[callno]->challenge), "%d", (int)ast_random()); */ iax_ie_append_str(&ied, IAX_IE_CHALLENGE, iaxs[callno]->challenge); } |