ALSA: hda: fix out-of-bound hdmi_eld.sad[] write

e->sad[] is declared with size ELD_MAX_SAD=16, but the guard
allows range 0-31.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by Roel Kluin and committed by Takashi Iwai 78735cff 626f5cef

+2 -2
+2 -2
sound/pci/hda/hda_eld.c
··· 508 char name[64]; 509 char *sname; 510 long long val; 511 - int n; 512 513 while (!snd_info_get_line(buffer, line, sizeof(line))) { 514 if (sscanf(line, "%s %llx", name, &val) != 2) ··· 539 sname++; 540 n = 10 * n + name[4] - '0'; 541 } 542 - if (n < 0 || n > 31) /* double the CEA limit */ 543 continue; 544 if (!strcmp(sname, "_coding_type")) 545 e->sad[n].format = val;
··· 508 char name[64]; 509 char *sname; 510 long long val; 511 + unsigned int n; 512 513 while (!snd_info_get_line(buffer, line, sizeof(line))) { 514 if (sscanf(line, "%s %llx", name, &val) != 2) ··· 539 sname++; 540 n = 10 * n + name[4] - '0'; 541 } 542 + if (n >= ELD_MAX_SAD) 543 continue; 544 if (!strcmp(sname, "_coding_type")) 545 e->sad[n].format = val;