---
 libavutil/samplefmt.c | 9 +++++----
 libavutil/samplefmt.h | 3 ++-
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/libavutil/samplefmt.c b/libavutil/samplefmt.c
index 389f726..8361bcf 100644
--- a/libavutil/samplefmt.c
+++ b/libavutil/samplefmt.c
@@ -105,7 +105,8 @@ int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt)
      return sample_fmt_info[sample_fmt].planar;
 }
 
-int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples,
+int av_samples_get_buffer_size(int *linesize, unsigned nb_channels,
+                               unsigned nb_samples,
                                enum AVSampleFormat sample_fmt, int align)
 {
     int line_size;
@@ -113,7 +114,7 @@ int av_samples_get_buffer_size(int *linesize, int 
nb_channels, int nb_samples,
     int planar      = av_sample_fmt_is_planar(sample_fmt);
 
     /* validate parameter ranges */
-    if (!sample_size || nb_samples <= 0 || nb_channels <= 0)
+    if (!sample_size || nb_samples == 0 || nb_channels == 0)
         return AVERROR(EINVAL);
 
     /* auto-select alignment if not specified */
@@ -123,8 +124,8 @@ int av_samples_get_buffer_size(int *linesize, int 
nb_channels, int nb_samples,
     }
 
     /* check for integer overflow */
-    if (nb_channels > INT_MAX / align ||
-        (int64_t)nb_channels * nb_samples > (INT_MAX - (align * nb_channels)) 
/ sample_size)
+    if (nb_channels > UINT_MAX / align ||
+        (uint64_t)nb_channels * nb_samples > (UINT_MAX - (align * 
nb_channels)) / sample_size)
         return AVERROR(EINVAL);
 
     line_size = planar ? FFALIGN(nb_samples * sample_size,               
align) :
diff --git a/libavutil/samplefmt.h b/libavutil/samplefmt.h
index 33cbded..10ae1df 100644
--- a/libavutil/samplefmt.h
+++ b/libavutil/samplefmt.h
@@ -138,7 +138,8 @@ int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt);
  * @param align         buffer size alignment (0 = default, 1 = no alignment)
  * @return              required buffer size, or negative error code on failure
  */
-int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples,
+int av_samples_get_buffer_size(int *linesize, unsigned nb_channels,
+                               unsigned nb_samples,
                                enum AVSampleFormat sample_fmt, int align);
 
 /**
-- 
1.8.5.3

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to