Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • Thrillseekr/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
400 results
Show changes
Commits on Source (6)
noinst_HEADERS = stdbit/stdbit.h
noinst_HEADERS = stdbit/stdbit.h stdckdint/stdckdint.h
pkglib_LTLIBRARIES = libcompat.la
libcompat_la_SOURCES = dummy.c
libcompat_la_LIBADD = $(LTLIBOBJS) $(LIBRT) $(LIBM)
......
/*
* Copyright (C) 2024 Rémi Denis-Courmont
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*/
#ifndef __STDC_VERSION_STDCKDINT_H__
# define __STDC_VERSION_STDCKDINT_H__ 202311L
# if defined(__GNUC__) || defined(__clang__)
# define ckd_add(r, a, b) __builtin_add_overflow(a, b, r)
# define ckd_sub(r, a, b) __builtin_sub_overflow(a, b, r)
# define ckd_mul(r, a, b) __builtin_mul_overflow(a, b, r)
# else
# include <limits.h>
# define __ckd_unsigned(suffix, type, MAX) \
static inline _Bool __ckd_add_##suffix(type *r, type a, type b) \
{ \
*r = a + b; \
return ((type)(a + b)) < a; \
} \
\
static inline _Bool __ckd_sub_##suffix(type *r, type a, type b) \
{ \
*r = a - b; \
return a < b; \
} \
\
static inline _Bool __ckd_mul_##suffix(type *r, type a, type b) \
{ \
*r = a * b; \
return b > 0 && a > (MAX / b); \
}
# define __ckd_func(op, r, a, b) \
_Generic (*(r), \
unsigned char: __ckd_##op##_uc((unsigned char *)(r), a, b), \
unsigned short: __ckd_##op##_us((unsigned short *)(r), a, b), \
unsigned int: __ckd_##op##_ui((unsigned int *)(r), a, b), \
unsigned long: __ckd_##op##_ul((unsigned long *)(r), a, b), \
unsigned long long: __ckd_##op##_ull((unsigned long long *)(r), a, b))
__ckd_unsigned(uc, unsigned char, UCHAR_MAX)
__ckd_unsigned(us, unsigned short, USHRT_MAX)
__ckd_unsigned(ui, unsigned int, UINT_MAX)
__ckd_unsigned(ul, unsigned long, ULONG_MAX)
__ckd_unsigned(ull, unsigned long long, ULLONG_MAX)
# define ckd_add(r, a, b) __ckd_func(add, r, a, b)
# define ckd_sub(r, a, b) __ckd_func(sub, r, a, b)
# define ckd_mul(r, a, b) __ckd_func(mul, r, a, b)
# endif
#endif /* __STDC_VERSION_STDCKDINT_H__ */
......@@ -983,6 +983,9 @@ dnl
AC_CHECK_HEADER([stdbit.h],, [
CPPFLAGS="${CPPFLAGS} -I\$(top_srcdir)/compat/stdbit"
])
AC_CHECK_HEADER([stdckdint.h],, [
CPPFLAGS="${CPPFLAGS} -I\$(top_srcdir)/compat/stdckdint"
])
dnl POSIX
AC_CHECK_HEADERS([arpa/inet.h poll.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h wordexp.h])
......
......@@ -25,6 +25,7 @@
#endif
#include <assert.h>
#include <stdckdint.h>
#include <vlc/libvlc.h>
#include <vlc/libvlc_renderer_discoverer.h>
......@@ -2122,9 +2123,8 @@ libvlc_media_player_get_programlist( libvlc_media_player_t *p_mi )
goto error;
size_t size;
if( mul_overflow( count, sizeof(libvlc_player_program_t *), &size) )
goto error;
if( add_overflow( size, sizeof(libvlc_player_programlist_t), &size) )
if (ckd_mul(&size, count, sizeof (libvlc_player_program_t *)) ||
ckd_add(&size, sizeof (libvlc_player_programlist_t), size))
goto error;
libvlc_player_programlist_t *list = malloc( size );
......
......@@ -24,6 +24,7 @@
#include <assert.h>
#include <errno.h>
#include <stdckdint.h>
#include <vlc/libvlc.h>
#include <vlc/libvlc_picture.h>
......@@ -173,9 +174,8 @@ static libvlc_media_tracklist_t *
libvlc_media_tracklist_alloc( size_t count )
{
size_t size;
if( mul_overflow( count, sizeof(libvlc_media_trackpriv_t *), &size) )
return NULL;
if( add_overflow( size, sizeof(libvlc_media_tracklist_t), &size) )
if (ckd_mul(&size, count, sizeof (libvlc_media_trackpriv_t *)) ||
ckd_add(&size, size, sizeof (libvlc_media_tracklist_t)))
return NULL;
libvlc_media_tracklist_t *list = malloc( size );
......
......@@ -24,6 +24,8 @@
# include "config.h"
#endif
#include <stdckdint.h>
#include <vlc/libvlc.h>
#include <vlc/libvlc_picture.h>
#include "libvlc_internal.h"
......@@ -213,9 +215,8 @@ libvlc_picture_list_t* libvlc_picture_list_from_attachments( input_attachment_t*
{
size_t size = 0;
libvlc_picture_list_t* list;
if ( mul_overflow( nb_attachments, sizeof( libvlc_picture_t* ), &size ) )
return NULL;
if ( add_overflow( size, sizeof( *list ), &size ) )
if (ckd_mul(&size, nb_attachments, sizeof (libvlc_picture_t *)) ||
ckd_add(&size, sizeof (*list), size))
return NULL;
list = malloc( size );
......
......@@ -208,6 +208,7 @@ endif
check_c_headers = [
['stdbit.h'],
['stdckdint.h'],
['arpa/inet.h'],
['threads.h'],
['netinet/tcp.h'],
......@@ -269,6 +270,9 @@ endforeach
if not cdata.has('HAVE_STDBIT_H')
list_inc_dirs += 'compat/stdbit'
endif
if not cdata.has('HAVE_STDCKDINT_H')
list_inc_dirs += 'compat/stdckdint'
endif
vlc_include_dirs = include_directories(list_inc_dirs)
#
......
......@@ -34,6 +34,7 @@
#include <errno.h>
#include <assert.h>
#include <stdckdint.h>
#include <sys/types.h>
#include <unistd.h>
......@@ -1303,7 +1304,7 @@ static int mms_ParsePacket( stream_t *p_access,
if( i_packet_id == p_sys->i_header_packet_id_type )
{
size_t new_header_size;
if( add_overflow( p_sys->i_header, i_packet_length, &new_header_size ) )
if (ckd_add(&new_header_size, p_sys->i_header, i_packet_length))
return -1;
uint8_t *p_reaced = realloc( p_sys->p_header, new_header_size );
if( !p_reaced )
......
......@@ -26,6 +26,8 @@
# include "config.h"
#endif
#include <stdckdint.h>
#include <vlc_common.h>
#include <vlc_threads.h>
#include <vlc_poll.h>
......@@ -202,8 +204,8 @@ static BOOL desktopResizeHandler( rdpContext *p_context )
fmt.video.i_frame_rate_base = 1000;
fmt.video.i_frame_rate = 1000 * p_sys->f_fps;
if ( umul_overflow( p_gdi->width, p_gdi->height, &p_sys->i_framebuffersize ) &&
umul_overflow( p_sys->i_framebuffersize, i_colordepth >> 3, &p_sys->i_framebuffersize) )
if (ckd_mul(&p_sys->i_framebuffersize, p_gdi->width, p_gdi->height) &&
ckd_mul(&p_sys->i_framebuffersize, p_sys->i_framebuffersize, i_colordepth >> 3) )
{
msg_Err( p_vlccontext->p_demux, "framebuffer size overflow");
return FALSE;
......
......@@ -22,6 +22,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#include <stdckdint.h>
#include "coreaudio_common.h"
#include <CoreAudio/CoreAudioTypes.h>
......@@ -699,9 +700,8 @@ MapInputLayout(audio_output_t *p_aout, const audio_sample_format_t *fmt,
unsigned channels = aout_FormatNbChannels(fmt);
size_t size;
if (mul_overflow(channels, sizeof(AudioChannelDescription), &size))
return VLC_ENOMEM;
if (add_overflow(size, sizeof(AudioChannelLayout), &size))
if (ckd_mul(&size, channels, sizeof(AudioChannelDescription)) ||
ckd_add(&size, size, sizeof(AudioChannelLayout)))
return VLC_ENOMEM;
AudioChannelLayout *inlayout = malloc(size);
if (inlayout == NULL)
......
......@@ -24,6 +24,7 @@
#include <assert.h>
#include <errno.h>
#include <stdckdint.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
......@@ -47,7 +48,7 @@ static struct vlc_res **vlc_obj_res(vlc_object_t *obj)
void *vlc_objres_new(size_t size, void (*release)(void *))
{
if (unlikely(add_overflow(sizeof (struct vlc_res), size, &size)))
if (unlikely(ckd_add(&size, sizeof (struct vlc_res), size)))
{
errno = ENOMEM;
return NULL;
......@@ -145,7 +146,7 @@ void *(vlc_obj_malloc)(vlc_object_t *obj, size_t size)
void *(vlc_obj_calloc)(vlc_object_t *obj, size_t nmemb, size_t size)
{
size_t tabsize;
if (unlikely(mul_overflow(nmemb, size, &tabsize)))
if (unlikely(ckd_mul(&tabsize, nmemb, size)))
{
errno = ENOMEM;
return NULL;
......
......@@ -32,6 +32,7 @@
#endif
#include <assert.h>
#include <limits.h>
#include <stdckdint.h>
#include <vlc_common.h>
#include "picture.h"
......@@ -161,8 +162,8 @@ int picture_Setup( picture_t *p_picture, const video_format_t *restrict fmt )
unsigned width, height;
if (unlikely(add_overflow(fmt->i_width, i_modulo_w - 1, &width))
|| unlikely(add_overflow(fmt->i_height, i_modulo_h - 1, &height)))
if (unlikely(ckd_add(&width, fmt->i_width, i_modulo_w - 1))
|| unlikely(ckd_add(&height, fmt->i_height, i_modulo_h - 1)))
return VLC_EGENERIC;
width = width / i_modulo_w * i_modulo_w;
......@@ -298,8 +299,8 @@ picture_t *picture_NewFromFormat(const video_format_t *restrict fmt)
{
const plane_t *p = &pic->p[i];
if (unlikely(mul_overflow(p->i_pitch, p->i_lines, &plane_sizes[i]))
|| unlikely(add_overflow(pic_size, plane_sizes[i], &pic_size)))
if (unlikely(ckd_mul(&plane_sizes[i], p->i_pitch, p->i_lines))
|| unlikely(ckd_add(&pic_size, pic_size, plane_sizes[i])))
goto error;
}
......
......@@ -23,6 +23,7 @@
#endif
#include <limits.h>
#include <stdckdint.h>
#include <vlc_common.h>
#include "player.h"
......@@ -103,9 +104,9 @@ vlc_player_title_list_Create(input_title_t *const *array, size_t count,
/* Allocate the struct + the whole list */
size_t size;
if (mul_overflow(count, sizeof(struct vlc_player_title), &size))
if (ckd_mul(&size, count, sizeof(struct vlc_player_title)))
return NULL;
if (add_overflow(size, sizeof(struct vlc_player_title_list), &size))
if (ckd_add(&size, size, sizeof(struct vlc_player_title_list)))
return NULL;
struct vlc_player_title_list *titles = malloc(size);
if (!titles)
......
......@@ -22,6 +22,8 @@
# include "config.h"
#endif
#include <stdckdint.h>
#include <vlc_common.h>
#include <vlc_memstream.h>
......@@ -147,8 +149,8 @@ size_t vlc_memstream_write(struct vlc_memstream *ms, const void *ptr,
if (len == 0)
return 0;
if (unlikely(add_overflow(ms->length, len, &newlen))
|| unlikely(add_overflow(newlen, 1, &newlen)))
if (unlikely(ckd_add(&newlen, ms->length, len))
|| unlikely(ckd_add(&newlen, newlen, 1)))
goto error;
char *base = realloc(ms->ptr, newlen);
......@@ -190,8 +192,8 @@ int vlc_memstream_vprintf(struct vlc_memstream *ms, const char *fmt,
va_end(ap);
if (len < 0
|| unlikely(add_overflow(ms->length, len, &newlen))
|| unlikely(add_overflow(newlen, 1, &newlen)))
|| unlikely(ckd_add(&newlen, ms->length, len))
|| unlikely(ckd_add(&newlen, newlen, 1)))
goto error;
ptr = realloc(ms->ptr, newlen);
......