Validate channel count before parsing Opus param string

This commit is contained in:
Cameron Gutman 2024-10-15 23:00:16 -05:00
parent 0fa805d973
commit dff1690fe1

View File

@ -664,6 +664,11 @@ static bool sendVideoAnnounce(PRTSP_MESSAGE response, int* error) {
static int parseOpusConfigFromParamString(char* paramStr, int channelCount, POPUS_MULTISTREAM_CONFIGURATION opusConfig) {
int i;
if (channelCount > AUDIO_CONFIGURATION_MAX_CHANNEL_COUNT) {
Limelog("Invalid channel count: %d\n", channelCount);
return -1;
}
// Set channel count (included in the prefix, so not parsed below)
opusConfig->channelCount = channelCount;
@ -760,6 +765,7 @@ static int parseOpusConfigurations(PRTSP_MESSAGE response) {
// Parse the normal quality Opus config
err = parseOpusConfigFromParamString(paramStart, channelCount, &NormalQualityOpusConfig);
if (err != 0) {
LC_ASSERT(err == 0);
return err;
}
@ -788,6 +794,7 @@ static int parseOpusConfigurations(PRTSP_MESSAGE response) {
// Parse the high quality Opus config
err = parseOpusConfigFromParamString(paramStart, channelCount, &HighQualityOpusConfig);
if (err != 0) {
LC_ASSERT(err == 0);
return err;
}