tag: id3v2: fix frame size check and potential invalid reads

Check the right variable when checking if there's
enough data left to read the frame size.

Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/876

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1065>
This commit is contained in:
Tim-Philipp Müller 2021-03-03 01:08:25 +00:00
parent 1a87a6572e
commit f4a1428a69

View file

@ -109,7 +109,7 @@ id3v2_parse_frame (ID3TagsWorking * work)
if (work->frame_flags & (ID3V2_FRAME_FORMAT_COMPRESSION | if (work->frame_flags & (ID3V2_FRAME_FORMAT_COMPRESSION |
ID3V2_FRAME_FORMAT_DATA_LENGTH_INDICATOR)) { ID3V2_FRAME_FORMAT_DATA_LENGTH_INDICATOR)) {
if (work->hdr.frame_data_size <= 4) if (frame_data_size <= 4)
return FALSE; return FALSE;
if (ID3V2_VER_MAJOR (work->hdr.version) == 3) { if (ID3V2_VER_MAJOR (work->hdr.version) == 3) {
work->parse_size = GST_READ_UINT32_BE (frame_data); work->parse_size = GST_READ_UINT32_BE (frame_data);