[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