Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 157bab0b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "OpusHeader: Add error checks in ParseOpusHeader()" into rvc-dev am:...

Merge "OpusHeader: Add error checks in ParseOpusHeader()" into rvc-dev am: 669acb12 am: 17f3f610 am: 7d6fb9d3

Change-Id: I85d8050532d7927667c149e2b9adfd6acd29d73a
parents 84e6baa5 7d6fb9d3
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -126,12 +126,20 @@ bool ParseOpusHeader(const uint8_t* data, size_t data_size, OpusHeader* header)
    }
    header->num_streams = data[kOpusHeaderNumStreamsOffset];
    header->num_coupled = data[kOpusHeaderNumCoupledStreamsOffset];
    if (header->num_streams + header->num_coupled != header->channels) {
        ALOGV("Inconsistent channel mapping.");
    if (header->num_coupled > header->num_streams ||
        header->num_streams + header->num_coupled != header->channels) {
        ALOGV("Inconsistent channel mapping, streams: %d coupled: %d channels: %d",
        header->num_streams, header->num_coupled, header->channels);
        return false;
    }
    for (int i = 0; i < header->channels; ++i)
        header->stream_map[i] = data[kOpusHeaderStreamMapOffset + i];
    for (int i = 0; i < header->channels; ++i) {
        uint8_t value = data[kOpusHeaderStreamMapOffset + i];
        if (value != 255 && value >= header->channels) {
            ALOGV("Invalid channel mapping for index %i : %d", i, value);
            return false;
        }
        header->stream_map[i] = value;
    }
    return true;
}