This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

The following commit(s) were added to refs/heads/master by this push:
     new 7338d08bcf avutil: zero size output parameter on allocation failure
7338d08bcf is described below

commit 7338d08bcf11b06045b678a66316f42da3d2de80
Author:     Zhao Zhili <[email protected]>
AuthorDate: Mon Apr 27 15:53:21 2026 +0800
Commit:     Zhao Zhili <[email protected]>
CommitDate: Tue Jun 16 12:41:53 2026 +0000

    avutil: zero size output parameter on allocation failure
    
    Several _alloc() functions taking a size_t *size output parameter
    either left it uninitialized or unconditionally set it to sizeof(...)
    when the underlying av_mallocz() failed. Callers that check the
    returned pointer first are unaffected, but the stale value is a trap
    for any code path that inspects size without a NULL check.
    
    Signed-off-by: Zhao Zhili <[email protected]>
---
 libavutil/ambient_viewing_environment.c |  7 ++++---
 libavutil/dovi_meta.c                   | 13 ++++++-------
 libavutil/film_grain_params.c           |  2 +-
 libavutil/hdr_dynamic_metadata.c        |  8 ++------
 libavutil/hdr_dynamic_vivid_metadata.c  |  4 +---
 libavutil/mastering_display_metadata.c  |  9 +++++----
 libavutil/spherical.c                   |  7 ++++---
 libavutil/stereo3d.c                    |  7 ++++---
 8 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/libavutil/ambient_viewing_environment.c 
b/libavutil/ambient_viewing_environment.c
index e359727776..1715359f57 100644
--- a/libavutil/ambient_viewing_environment.c
+++ b/libavutil/ambient_viewing_environment.c
@@ -32,14 +32,15 @@ AVAmbientViewingEnvironment 
*av_ambient_viewing_environment_alloc(size_t *size)
 {
     AVAmbientViewingEnvironment *env =
         av_mallocz(sizeof(AVAmbientViewingEnvironment));
+
+    if (size)
+        *size = env ? sizeof(*env) : 0;
+
     if (!env)
         return NULL;
 
     get_defaults(env);
 
-     if (size)
-        *size = sizeof(*env);
-
     return env;
 }
 
diff --git a/libavutil/dovi_meta.c b/libavutil/dovi_meta.c
index dfa4a438ed..048367665e 100644
--- a/libavutil/dovi_meta.c
+++ b/libavutil/dovi_meta.c
@@ -27,11 +27,9 @@ AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size)
 {
     AVDOVIDecoderConfigurationRecord *dovi =
         av_mallocz(sizeof(AVDOVIDecoderConfigurationRecord));
-    if (!dovi)
-        return NULL;
 
-     if (size)
-        *size = sizeof(*dovi);
+    if (size)
+        *size = dovi ? sizeof(*dovi) : 0;
 
     return dovi;
 }
@@ -47,11 +45,12 @@ typedef struct AVDOVIMetadataInternal {
 AVDOVIMetadata *av_dovi_metadata_alloc(size_t *size)
 {
     AVDOVIMetadataInternal *dovi = av_mallocz(sizeof(AVDOVIMetadataInternal));
-    if (!dovi)
-        return NULL;
 
     if (size)
-        *size = sizeof(*dovi);
+        *size = dovi ? sizeof(*dovi) : 0;
+
+    if (!dovi)
+        return NULL;
 
     dovi->metadata = (struct AVDOVIMetadata) {
         .header_offset      = offsetof(AVDOVIMetadataInternal, header),
diff --git a/libavutil/film_grain_params.c b/libavutil/film_grain_params.c
index 0a6004b6b3..cf63dcc4a6 100644
--- a/libavutil/film_grain_params.c
+++ b/libavutil/film_grain_params.c
@@ -25,7 +25,7 @@ AVFilmGrainParams *av_film_grain_params_alloc(size_t *size)
     AVFilmGrainParams *params = av_mallocz(sizeof(AVFilmGrainParams));
 
     if (size)
-        *size = sizeof(*params);
+        *size = params ? sizeof(*params) : 0;
 
     return params;
 }
diff --git a/libavutil/hdr_dynamic_metadata.c b/libavutil/hdr_dynamic_metadata.c
index e8987f836d..9c89625421 100644
--- a/libavutil/hdr_dynamic_metadata.c
+++ b/libavutil/hdr_dynamic_metadata.c
@@ -36,11 +36,9 @@ static const int32_t saturation_weight_den = 8;
 AVDynamicHDRPlus *av_dynamic_hdr_plus_alloc(size_t *size)
 {
     AVDynamicHDRPlus *hdr_plus = av_mallocz(sizeof(AVDynamicHDRPlus));
-    if (!hdr_plus)
-        return NULL;
 
     if (size)
-        *size = sizeof(*hdr_plus);
+        *size = hdr_plus ? sizeof(*hdr_plus) : 0;
 
     return hdr_plus;
 }
@@ -399,11 +397,9 @@ int av_dynamic_hdr_plus_to_t35(const AVDynamicHDRPlus *s, 
uint8_t **data, size_t
 AVDynamicHDRSmpte2094App5 *av_dynamic_hdr_smpte2094_app5_alloc(size_t *size)
 {
     AVDynamicHDRSmpte2094App5 *smpte2094_app5 = 
av_mallocz(sizeof(AVDynamicHDRSmpte2094App5));
-    if (!smpte2094_app5)
-        return NULL;
 
     if (size)
-        *size = sizeof(*smpte2094_app5);
+        *size = smpte2094_app5 ? sizeof(*smpte2094_app5) : 0;
 
     return smpte2094_app5;
 }
diff --git a/libavutil/hdr_dynamic_vivid_metadata.c 
b/libavutil/hdr_dynamic_vivid_metadata.c
index 32da01f587..630ea9492a 100644
--- a/libavutil/hdr_dynamic_vivid_metadata.c
+++ b/libavutil/hdr_dynamic_vivid_metadata.c
@@ -24,11 +24,9 @@
 AVDynamicHDRVivid *av_dynamic_hdr_vivid_alloc(size_t *size)
 {
     AVDynamicHDRVivid *hdr_vivid = av_mallocz(sizeof(AVDynamicHDRVivid));
-    if (!hdr_vivid)
-        return NULL;
 
     if (size)
-        *size = sizeof(*hdr_vivid);
+        *size = hdr_vivid ? sizeof(*hdr_vivid) : 0;
 
     return hdr_vivid;
 }
diff --git a/libavutil/mastering_display_metadata.c 
b/libavutil/mastering_display_metadata.c
index dd37ed7d0e..c4272a499c 100644
--- a/libavutil/mastering_display_metadata.c
+++ b/libavutil/mastering_display_metadata.c
@@ -44,14 +44,15 @@ AVMasteringDisplayMetadata 
*av_mastering_display_metadata_alloc(void)
 AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc_size(size_t 
*size)
 {
     AVMasteringDisplayMetadata *mastering = 
av_mallocz(sizeof(AVMasteringDisplayMetadata));
+
+    if (size)
+        *size = mastering ? sizeof(*mastering) : 0;
+
     if (!mastering)
         return NULL;
 
     get_defaults(mastering);
 
-    if (size)
-        *size = sizeof(*mastering);
-
     return mastering;
 }
 
@@ -74,7 +75,7 @@ AVContentLightMetadata 
*av_content_light_metadata_alloc(size_t *size)
     AVContentLightMetadata *metadata = 
av_mallocz(sizeof(AVContentLightMetadata));
 
     if (size)
-        *size = sizeof(*metadata);
+        *size = metadata ? sizeof(*metadata) : 0;
 
     return metadata;
 }
diff --git a/libavutil/spherical.c b/libavutil/spherical.c
index 71342faea9..646e76b186 100644
--- a/libavutil/spherical.c
+++ b/libavutil/spherical.c
@@ -26,14 +26,15 @@
 AVSphericalMapping *av_spherical_alloc(size_t *size)
 {
     AVSphericalMapping *spherical = av_mallocz(sizeof(AVSphericalMapping));
+
+    if (size)
+        *size = spherical ? sizeof(*spherical) : 0;
+
     if (!spherical)
         return NULL;
 
     spherical->projection = AV_SPHERICAL_RECTILINEAR;
 
-    if (size)
-        *size = sizeof(*spherical);
-
     return spherical;
 }
 
diff --git a/libavutil/stereo3d.c b/libavutil/stereo3d.c
index bf3d1e1fe5..561784bc7b 100644
--- a/libavutil/stereo3d.c
+++ b/libavutil/stereo3d.c
@@ -39,14 +39,15 @@ AVStereo3D *av_stereo3d_alloc(void)
 AVStereo3D *av_stereo3d_alloc_size(size_t *size)
 {
     AVStereo3D *stereo = av_mallocz(sizeof(AVStereo3D));
+
+    if (size)
+        *size = stereo ? sizeof(*stereo) : 0;
+
     if (!stereo)
         return NULL;
 
     get_defaults(stereo);
 
-    if (size)
-        *size = sizeof(*stereo);
-
     return stereo;
 }
 

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to