Commit 1e1cecd474 for freeswitch.com

commit 1e1cecd474147bd4502ef249d9894d0e822f2c99
Author: Andrey Volk <andywolk@gmail.com>
Date:   Thu May 7 20:20:52 2026 +0300

    Merge commit from fork

diff --git a/src/switch_stun.c b/src/switch_stun.c
index d58dd6fd93..35c9daed91 100644
--- a/src/switch_stun.c
+++ b/src/switch_stun.c
@@ -239,7 +239,13 @@ SWITCH_DECLARE(switch_stun_packet_t *) switch_stun_packet_parse(uint8_t *buf, ui
 		case SWITCH_STUN_ATTR_DESTINATION_ADDRESS:
 		case SWITCH_STUN_ATTR_PRIORITY:
 			{
-				switch_stun_ip_t *ip = (switch_stun_ip_t *) attr->value;
+				switch_stun_ip_t *ip;
+
+				if (bytes_left < sizeof(switch_stun_ip_t)) {
+					return NULL;
+				}
+
+				ip = (switch_stun_ip_t *) attr->value;
 				ip->port = ntohs(ip->port);
 			}
 			break;
@@ -247,6 +253,11 @@ SWITCH_DECLARE(switch_stun_packet_t *) switch_stun_packet_parse(uint8_t *buf, ui
 			{
 				switch_stun_ip_t *ip;
 				uint32_t addr_length = 0;
+
+				if (bytes_left < sizeof(switch_stun_ip_t)) {
+					return NULL;
+				}
+
 				ip = (switch_stun_ip_t *) attr->value;

 				switch (ip->family) {
@@ -277,7 +288,13 @@ SWITCH_DECLARE(switch_stun_packet_t *) switch_stun_packet_parse(uint8_t *buf, ui
 		case SWITCH_STUN_ATTR_BANDWIDTH:
 		case SWITCH_STUN_ATTR_OPTIONS:
 			{
-				uint32_t *val = (uint32_t *) attr->value;
+				uint32_t *val;
+
+				if (bytes_left < sizeof(uint32_t)) {
+					return NULL;
+				}
+
+				val = (uint32_t *)attr->value;

 				if (attr->length != sizeof(uint32_t)) {
 					/* Invalid */
@@ -289,7 +306,13 @@ SWITCH_DECLARE(switch_stun_packet_t *) switch_stun_packet_parse(uint8_t *buf, ui
 			break;
 		case SWITCH_STUN_ATTR_ERROR_CODE:	/* ErrorCode */
 			{
-				uint32_t *u = (uint32_t *) attr->value;
+				uint32_t *u;
+
+				if (bytes_left < sizeof(uint32_t)) {
+					return NULL;
+				}
+
+				u = (uint32_t *)attr->value;
 				*u = htonl(*u);
 			}
 			break;