[vlc-commits] [Git][videolan/vlc][3.0.x] 2 commits: codec: jpeg: use checked arithmetic for alloc
François Cartegnie (@fcartegnie)
gitlab at videolan.org
Tue Sep 1 04:45:12 UTC 2026
François Cartegnie pushed to branch 3.0.x at VideoLAN / VLC
Commits:
50230d3e by François Cartegnie at 2026-08-31T23:10:59+02:00
codec: jpeg: use checked arithmetic for alloc
refs #29719
(cherry picked from commit 38d82810860d9aba5fee5f7ace67b1e819f501ef)
- - - - -
53bfb027 by François Cartegnie at 2026-08-31T23:10:59+02:00
codec: png: use checked arithmetic for alloc
fix #29719
(adapted from commit 99bc03a405e803509da355cf071d8236f7ddfea6)
- - - - -
2 changed files:
- modules/codec/jpeg.c
- modules/codec/png.c
Changes:
=====================================
modules/codec/jpeg.c
=====================================
@@ -31,6 +31,7 @@
#include <jpeglib.h>
#include <setjmp.h>
+#include <stdckdint.h>
/* JPEG_SYS_COMMON_MEMBERS:
* members common to encoder and decoder descriptors
@@ -87,7 +88,7 @@ struct encoder_sys_t
struct jpeg_compress_struct p_jpeg;
- int i_blocksize;
+ size_t i_blocksize;
int i_quality;
};
@@ -598,7 +599,13 @@ static int OpenEncoder(vlc_object_t *p_this)
p_sys->err.output_message = user_error_message;
p_sys->i_quality = var_GetInteger(p_enc, ENC_CFG_PREFIX "quality");
- p_sys->i_blocksize = 3 * p_enc->fmt_in.video.i_visible_width * p_enc->fmt_in.video.i_visible_height;
+
+ if( ckd_mul( &p_sys->i_blocksize, 3, p_enc->fmt_in.video.i_visible_width ) ||
+ ckd_mul( &p_sys->i_blocksize, p_sys->i_blocksize, p_enc->fmt_in.video.i_visible_height ) )
+ {
+ free( p_sys );
+ return VLC_EGENERIC;
+ }
p_enc->fmt_in.i_codec = VLC_CODEC_J420;
p_enc->pf_encode_video = EncodeBlock;
=====================================
modules/codec/png.c
=====================================
@@ -32,6 +32,7 @@
#include <vlc_plugin.h>
#include <vlc_codec.h>
#include <png.h>
+#include <stdckdint.h>
/* PNG_SYS_COMMON_MEMBERS:
* members common to encoder and decoder descriptors
@@ -74,7 +75,7 @@ static int DecodeBlock ( decoder_t *, block_t * );
struct encoder_sys_t
{
PNG_SYS_COMMON_MEMBERS
- int i_blocksize;
+ size_t i_blocksize;
};
static int OpenEncoder(vlc_object_t *);
@@ -346,8 +347,12 @@ static int OpenEncoder(vlc_object_t *p_this)
p_enc->p_sys->p_obj = p_this;
- p_enc->p_sys->i_blocksize = 3 * p_enc->fmt_in.video.i_visible_width *
- p_enc->fmt_in.video.i_visible_height;
+ if( ckd_mul( &p_enc->p_sys->i_blocksize, 3, p_enc->fmt_in.video.i_visible_width ) ||
+ ckd_mul( &p_enc->p_sys->i_blocksize, p_enc->p_sys->i_blocksize, p_enc->fmt_in.video.i_visible_height ) )
+ {
+ free( p_enc->p_sys );
+ return VLC_EGENERIC;
+ }
p_enc->fmt_in.i_codec = VLC_CODEC_RGB24;
p_enc->fmt_in.video.i_bmask = 0;
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/e20390a4de9e17251d9d2ebdba0de45e207308be...53bfb027c2e16c463e6d943affc9ddc21edd9750
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/e20390a4de9e17251d9d2ebdba0de45e207308be...53bfb027c2e16c463e6d943affc9ddc21edd9750
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help
More information about the vlc-commits
mailing list