libavformat/id3v2.c: return valid string in decode_str for empty strings

with no bom. Fixes: #YWH-PGM40646-12
This commit is contained in:
Romain Beauxis
2025-12-13 12:07:19 -06:00
committed by Timo Rothenpieler
parent c50e5c7778
commit b43645b2ef
3 changed files with 11 additions and 5 deletions

View File

@@ -257,6 +257,9 @@ static int decode_str(AVFormatContext *s, AVIOContext *pb, int encoding,
return ret;
}
if (left == 0)
goto end;
switch (encoding) {
case ID3v2_ENCODING_ISO8859:
while (left && ch) {
@@ -280,10 +283,7 @@ static int decode_str(AVFormatContext *s, AVIOContext *pb, int encoding,
case 0xfeff:
break;
case 0: // empty string without bom
ffio_free_dyn_buf(&dynbuf);
*dst = NULL;
*maxread = left;
return 0;
goto end;
default:
av_log(s, AV_LOG_ERROR, "Incorrect BOM value: 0x%x\n", bom);
ffio_free_dyn_buf(&dynbuf);
@@ -313,6 +313,7 @@ static int decode_str(AVFormatContext *s, AVIOContext *pb, int encoding,
av_log(s, AV_LOG_WARNING, "Unknown encoding %d\n", encoding);
}
end:
if (ch)
avio_w8(dynbuf, 0);

View File

@@ -1,6 +1,9 @@
FATE_ID3V2_FFPROBE-$(CONFIG_MP3_DEMUXER) += fate-id3v2-priv
fate-id3v2-priv: CMD = probetags $(TARGET_SAMPLES)/id3v2/id3v2_priv.mp3
FATE_ID3V2_FFMPEG-$(CONFIG_MP3_DEMUXER) += fate-id3v2-invalid-tags
fate-id3v2-invalid-tags: CMD = $(FFMPEG) -nostdin -hide_banner -loglevel fatal -i $(TARGET_SAMPLES)/id3v2/invalid-tags.mp3 -f null - 2>&1 || true
FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, MP3) += fate-id3v2-priv-remux
fate-id3v2-priv-remux: CMD = transcode mp3 $(TARGET_SAMPLES)/id3v2/id3v2_priv.mp3 mp3 "-c copy" "-c copy -t 0.1" "-show_entries format_tags"
@@ -13,5 +16,6 @@ FATE_ID3V2_FFMPEG_FFPROBE-$(call REMUX, AIFF, WAV_DEMUXER FLAC_DEMUXER PCM_S16LE
fate-id3v2-utf16-bom: CMD = transcode wav $(TARGET_SAMPLES)/audio-reference/yo.raw-short.wav aiff "-map 0:a -map 1:v -af aresample,channelmap=channel_layout=hexagonal,aresample -c:a pcm_s24be -c:v copy -write_id3v2 1 -id3v2_version 3 -map_metadata:g:0 1:g -map_metadata:s:v 1:g" "-c copy -t 0.05" "-show_entries stream=channel_layout:stream_tags:format_tags" "-i $(TARGET_SAMPLES)/cover_art/cover_art.flac"
FATE_SAMPLES_FFPROBE += $(FATE_ID3V2_FFPROBE-yes)
FATE_SAMPLES_FFMPEG += $(FATE_ID3V2_FFMPEG-yes)
FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_ID3V2_FFMPEG_FFPROBE-yes)
fate-id3v2: $(FATE_ID3V2_FFPROBE-yes) $(FATE_ID3V2_FFMPEG_FFPROBE-yes)
fate-id3v2: $(FATE_ID3V2_FFPROBE-yes) $(FATE_ID3V2_FFMPEG_FFPROBE-yes) $(FATE_ID3V2_FFMPEG-yes)

View File

@@ -0,0 +1 @@
Error opening input files: Invalid data found when processing input