From 51859252f7de4048e9b421e790883b90e1c2848a Mon Sep 17 00:00:00 2001
From: Sebastien Duthil <sduthil@wazo.community>
Date: Thu, 14 Oct 2021 11:15:30 -0400
Subject: [PATCH] main/stun.c: fix crash upon STUN request timeout

Some ast_stun_request users do not provide a destination address when
sending to a connection-mode socket.

ASTERISK-29691

Change-Id: Idd9114c3380216ba48abfc3c68619e79ad37defc
---
 main/stun.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/main/stun.c b/main/stun.c
index 4e9dac18af..7a8e0e5f4a 100644
--- a/main/stun.c
+++ b/main/stun.c
@@ -239,17 +239,24 @@ static void append_attr_address(struct stun_attr **attr, int attrval, struct soc
 
 static void handle_stun_timeout(int retry, struct sockaddr_in *dst)
 {
+	char *stun_destination = "";
+	if (dst) {
+		ast_asprintf(&stun_destination, "to '%s' ", ast_inet_ntoa(dst->sin_addr));
+	}
 	if (retry < STUN_MAX_RETRIES) {
 		ast_log(LOG_NOTICE,
-			"Attempt %d to send STUN request to '%s' timed out.",
+			"Attempt %d to send STUN request %stimed out.\n",
 			retry,
-			ast_inet_ntoa(dst->sin_addr));
+			stun_destination);
 	} else {
 		ast_log(LOG_WARNING,
-			"Attempt %d to send STUN request to '%s' timed out."
+			"Attempt %d to send STUN request %stimed out. "
 			"Check that the server address is correct and reachable.\n",
 			retry,
-			ast_inet_ntoa(dst->sin_addr));
+			stun_destination);
+	}
+	if (dst) {
+		ast_free(stun_destination);
 	}
 }
 
-- 
GitLab