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;
{
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) {
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 */
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;