]> git.alsa-project.org Git - alsa-lib.git/commitdiff
topology: decode: Fix decoding PCM formats and rates
authorPiotr Maziarz <piotrx.maziarz@linux.intel.com>
Mon, 31 Aug 2020 09:09:00 +0000 (11:09 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 31 Aug 2020 11:03:01 +0000 (13:03 +0200)
Not checking _LAST format and rate, which are valid indexes in arrays,
makes data loss while converting binary to standard ALSA configuration
file.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/topology/pcm.c

index b15b95045ab57e03fa8376aa722958edd4e36920..db401145f3ecd3663c1d45cda8cad9543fc1b4a6 100644 (file)
@@ -549,7 +549,7 @@ int tplg_save_stream_caps(snd_tplg_t *tplg ATTRIBUTE_UNUSED,
        if (err >= 0 && sc->formats) {
                err = tplg_save_printf(dst, pfx, "\tformats '");
                first = 1;
-               for (i = 0; err >= 0 && i < SND_PCM_FORMAT_LAST; i++) {
+               for (i = 0; err >= 0 && i <= SND_PCM_FORMAT_LAST; i++) {
                        if (sc->formats & (1ULL << i)) {
                                s = snd_pcm_format_name(i);
                                err = tplg_save_printf(dst, NULL, "%s%s",
@@ -563,7 +563,7 @@ int tplg_save_stream_caps(snd_tplg_t *tplg ATTRIBUTE_UNUSED,
        if (err >= 0 && sc->rates) {
                err = tplg_save_printf(dst, pfx, "\trates '");
                first = 1;
-               for (i = 0; err >= 0 && i < SND_PCM_RATE_LAST; i++) {
+               for (i = 0; err >= 0 && i <= SND_PCM_RATE_LAST; i++) {
                        if (sc->rates & (1ULL << i)) {
                                s = get_rate_name(i);
                                err = tplg_save_printf(dst, NULL, "%s%s",