Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
431a186d by Tristan Matthews at 2025-10-16T15:14:38+00:00
video_filter: puzzle: avoid NULL deref
Furthermore, don't bother looping through planes if we've already decided
b_init is false.
Fixes CID 1048757
- - - - -
1 changed file:
- modules/video_filter/puzzle/puzzle.c
Changes:
=====================================
modules/video_filter/puzzle/puzzle.c
=====================================
@@ -259,17 +259,13 @@ picture_t *Filter( filter_t *p_filter, picture_t
*p_pic_in ) {
int i_ret = 0;
p_sys->b_bake_request = false;
- if ((p_sys->pi_order == NULL) || (p_sys->ps_desk_planes == NULL) ||
(p_sys->ps_pict_planes == NULL) || (p_sys->ps_puzzle_array == NULL) ||
(p_sys->ps_pieces == NULL))
- p_sys->b_init = false;
-
- if ((p_sys->ps_pieces_shapes == NULL) && p_sys->s_current_param.b_advanced
&& (p_sys->s_current_param.i_shape_size != 0))
- p_sys->b_init = false;
-
/* assert initialized & allocated data match with current frame
characteristics */
if ( p_sys->s_allocated.i_planes != p_pic_out->i_planes)
p_sys->b_init = false;
- p_sys->s_current_param.i_planes = p_pic_out->i_planes;
- if (p_sys->ps_pict_planes != NULL) {
+
+ if ((p_sys->pi_order == NULL) || (p_sys->ps_desk_planes == NULL) ||
(p_sys->ps_pict_planes == NULL) || (p_sys->ps_puzzle_array == NULL) ||
(p_sys->ps_pieces == NULL)) {
+ p_sys->b_init = false;
+ } else if (p_sys->b_init) {
for (uint8_t i_plane = 0; i_plane < p_sys->s_allocated.i_planes;
i_plane++) {
if ( (p_sys->ps_pict_planes[i_plane].i_lines !=
p_pic_in->p[i_plane].i_visible_lines)
|| (p_sys->ps_pict_planes[i_plane].i_width !=
p_pic_in->p[i_plane].i_visible_pitch / p_pic_in->p[i_plane].i_pixel_pitch)
@@ -279,6 +275,11 @@ picture_t *Filter( filter_t *p_filter, picture_t *p_pic_in
) {
}
}
+ if ((p_sys->ps_pieces_shapes == NULL) && p_sys->s_current_param.b_advanced
&& (p_sys->s_current_param.i_shape_size != 0))
+ p_sys->b_init = false;
+
+ p_sys->s_current_param.i_planes = p_pic_out->i_planes;
+
p_sys->s_current_param.i_pict_width = (int)
p_pic_in->p[0].i_visible_pitch / p_pic_in->p[0].i_pixel_pitch;
p_sys->s_current_param.i_pict_height = (int)
p_pic_in->p[0].i_visible_lines;
p_sys->s_current_param.i_desk_width = (int)
p_pic_out->p[0].i_visible_pitch / p_pic_out->p[0].i_pixel_pitch;
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/commit/431a186d739830f46fd829f358e5532003dd7866
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/commit/431a186d739830f46fd829f358e5532003dd7866
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits