shithub: libvpx

Download patch

ref: 6b191c16c08de2431083410e33db72b97d65e184
parent: 41071cadec1ad24d3c37ce3a81b5ec36801bec2e
parent: 2361c05e8935a74edf698ec651071d58e3f77c21
author: Wan-Teh Chang <wtc@google.com>
date: Tue Nov 20 13:47:19 EST 2018

Merge "Validate the |border| parameter earlier."

--- a/vpx_scale/generic/yv12config.c
+++ b/vpx_scale/generic/yv12config.c
@@ -154,6 +154,13 @@
   if (width > DECODE_WIDTH_LIMIT || height > DECODE_HEIGHT_LIMIT) return -1;
 #endif
 
+  /* Only support allocating buffers that have a border that's a multiple
+   * of 32. The border restriction is required to get 16-byte alignment of
+   * the start of the chroma rows without introducing an arbitrary gap
+   * between planes, which would break the semantics of things like
+   * vpx_img_set_rect(). */
+  if (border & 0x1f) return -3;
+
   if (ybf) {
     const int vp9_byte_align = (byte_alignment == 0) ? 1 : byte_alignment;
     const int aligned_width = (width + 7) & ~7;
@@ -222,13 +229,6 @@
       // removed if border is totally removed.
       memset(ybf->buffer_alloc, 0, ybf->buffer_alloc_sz);
     }
-
-    /* Only support allocating buffers that have a border that's a multiple
-     * of 32. The border restriction is required to get 16-byte alignment of
-     * the start of the chroma rows without introducing an arbitrary gap
-     * between planes, which would break the semantics of things like
-     * vpx_img_set_rect(). */
-    if (border & 0x1f) return -3;
 
     ybf->y_crop_width = width;
     ybf->y_crop_height = height;