diff --git a/src/modules/module-netjack2/packets.h b/src/modules/module-netjack2/packets.h index c7e92fc62..dc530d041 100644 --- a/src/modules/module-netjack2/packets.h +++ b/src/modules/module-netjack2/packets.h @@ -133,7 +133,7 @@ struct nj2_packet_header { static inline void nj2_dump_packet_header(struct nj2_packet_header *header) { - pw_log_info("Type: %s", header->type); + pw_log_info("Type: %.*s", (int)sizeof(header->type), header->type); pw_log_info("Data Type: %c", ntohl(header->data_type)); pw_log_info("Data Stream: %c", ntohl(header->data_stream)); pw_log_info("ID: %u", ntohl(header->id)); diff --git a/src/modules/module-netjack2/peer.c b/src/modules/module-netjack2/peer.c index ba2e10741..3a69a083c 100644 --- a/src/modules/module-netjack2/peer.c +++ b/src/modules/module-netjack2/peer.c @@ -156,6 +156,12 @@ static int netjack2_init(struct netjack2_peer *peer) errno = EINVAL; goto error_errno; } + if (peer->params.mtu < UDP_HEADER_SIZE + sizeof(struct nj2_packet_header) || + sizeof(struct nj2_packet_header) + + peer->params.recv_audio_channels * sizeof(int32_t) > peer->params.mtu) { + errno = EINVAL; + goto error_errno; + } if (peer->params.sample_encoder == NJ2_ENCODER_INT) { if (spa_overflow_mul(peer->params.period_size, (uint32_t)sizeof(int16_t), &peer->max_encoded_size) ||