[alsa-devel] [PATCH] amixer: actually print all TLVs in a container TLV
Due to a wrong indexing of tlv[] decode_tlv() always skips to the end of the container TLV since the used tlv[1] contains the container TLV size instead of the intended element size.
This causes, for example, only the first HDMI channel map TLV to be shown.
Fix the indexing to actually use the element size.
Signed-off-by: Anssi Hannula anssi.hannula@iki.fi --- amixer/amixer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/amixer/amixer.c b/amixer/amixer.c index 7727943..b83b0c3 100644 --- a/amixer/amixer.c +++ b/amixer/amixer.c @@ -468,7 +468,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_ return; } decode_tlv(spaces + 2, tlv + idx, tlv[idx+1] + 8); - idx += 2 + (tlv[1] + sizeof(unsigned int) - 1) / sizeof(unsigned int); + idx += 2 + (tlv[idx+1] + sizeof(unsigned int) - 1) / sizeof(unsigned int); } break; case SND_CTL_TLVT_DB_SCALE:
At Mon, 30 Sep 2013 23:46:50 +0300, Anssi Hannula wrote:
Due to a wrong indexing of tlv[] decode_tlv() always skips to the end of the container TLV since the used tlv[1] contains the container TLV size instead of the intended element size.
This causes, for example, only the first HDMI channel map TLV to be shown.
Fix the indexing to actually use the element size.
Signed-off-by: Anssi Hannula anssi.hannula@iki.fi
Thanks, applied.
Takashi
amixer/amixer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/amixer/amixer.c b/amixer/amixer.c index 7727943..b83b0c3 100644 --- a/amixer/amixer.c +++ b/amixer/amixer.c @@ -468,7 +468,7 @@ static void decode_tlv(unsigned int spaces, unsigned int *tlv, unsigned int tlv_ return; } decode_tlv(spaces + 2, tlv + idx, tlv[idx+1] + 8);
idx += 2 + (tlv[1] + sizeof(unsigned int) - 1) / sizeof(unsigned int);
} break; case SND_CTL_TLVT_DB_SCALE:idx += 2 + (tlv[idx+1] + sizeof(unsigned int) - 1) / sizeof(unsigned int);
-- 1.8.1.5
participants (2)
-
Anssi Hannula
-
Takashi Iwai