diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/polyp/channelmap.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/polyp/channelmap.c b/src/polyp/channelmap.c index 8d642a06..38349bfa 100644 --- a/src/polyp/channelmap.c +++ b/src/polyp/channelmap.c @@ -277,10 +277,19 @@ int pa_channel_map_valid(const pa_channel_map *map) { if (map->channels <= 0 || map->channels > PA_CHANNELS_MAX) return 0; - for (c = 0; c < map->channels; c++) + for (c = 0; c < map->channels; c++) { + unsigned k; + if (map->map[c] < 0 ||map->map[c] >= PA_CHANNEL_POSITION_MAX) return 0; + /* Don't allow positions to be specified twice */ + for (k = 0; k < c; k++) + if (map->map[k] == map->map[c]) + return 0; + + } + return 1; } |