video-frame: avoid possible out of bound memory access

Although the components' initialization code would fill in -1 to all
unset components, make the code a bit more defensive and check for an
index bound first.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2231>
This commit is contained in:
Camilo Celis Guzman 2022-04-18 18:14:44 +09:00 committed by GStreamer Marge Bot
parent 0dd04764f7
commit c4255f08f7

View file

@ -283,7 +283,7 @@ scale_tile_shifts (const GstVideoFormatInfo * finfo, gint plane, guint * ws,
guint * hs) guint * hs)
{ {
gint comp[GST_VIDEO_MAX_COMPONENTS]; gint comp[GST_VIDEO_MAX_COMPONENTS];
gint i; gint i = 1;
gst_video_format_info_component (finfo, plane, comp); gst_video_format_info_component (finfo, plane, comp);
@ -294,8 +294,10 @@ scale_tile_shifts (const GstVideoFormatInfo * finfo, gint plane, guint * ws,
/* for each additional component in the same plane, double the tile width, /* for each additional component in the same plane, double the tile width,
* this should provide the appropriate tile size when the tile size varies * this should provide the appropriate tile size when the tile size varies
* base on the subsampling. */ * base on the subsampling. */
for (i = 1; comp[i] >= 0; i++) while (i < GST_VIDEO_MAX_COMPONENTS && comp[i] >= 0) {
*ws += 1; *ws += 1;
i++;
}
} }