From patchwork Tue Oct 31 19:28:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 5795 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp4399221jah; Tue, 31 Oct 2017 12:37:17 -0700 (PDT) X-Google-Smtp-Source: ABhQp+S14MQscjF1H/kVqg66J6yror4MHUzZ2pnQHS2rZxv8QSZhkWoU72Q/XTaJ5RJjVkhUQeBD X-Received: by 10.28.160.23 with SMTP id j23mr3100161wme.125.1509478637200; Tue, 31 Oct 2017 12:37:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509478637; cv=none; d=google.com; s=arc-20160816; b=LxyWox5cuKivoOD7dsXWVpF+3caqBsv/AeegM5Oyce+eoyijFduK+ViCaGXrVJozln krXc7c+l17FwOTmRcBER8OSPl5Jp02n4ijmy//PXuheYf+JWLT0sTRG54kYLmuCBgCUN ZJOjcBPZUXr/X4WcRMOG8ERDMs3KJmAzjX/IC9X/IHHsO+MPq9tZ8xsUEoV/FMo9eAP+ tygJxed1wK5ieJQFwOeYZsSfmBR94ZbsRV+a5kwtnY2kiYptrD5oHAoKRaMtm3WmQAgi djxhTdI5f1//gyWgJOS3YzOVtV2RA5zm9CvQPGREExmPLgAWaBjXAr6Yg3Jq3jDB2giM c0ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=KTNiB4QVkQ9JL4KCGSlCzcX6dy/tEUxnhok+avnFRGU=; b=Nh9GDxmDuVi4PqJ3lQic9t1SMbWD3IiMdfk3F2mji3Sjv/p7/1l1yt0/PFpuJhHzIC QvzGzXtie9FXDqm0v47hj9AXtEqzdtPzYEWU4zcuM0OcyWL8W+WIj6ugkVEdXkguQ7FQ rBi8hJkegr6l45bvrZYMJkNRvNuQhrSsYkxNJn9oZtFpBAye/ljxvxv7O+zwsxRm8Wr4 awz0Zs/xpCs9WF1v5PiXxXzkcErAhA5+qIvMXqhvDgSh4WhUAKNMr+Etn8cUnwb5hSp4 8gFzMvjJ85VUWtBf9sydZZvAPvq5ZmoNikZodopKRod/GcB3JUymjmHF3MVyIWr9P0Pv 5Cfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=LuCvnPMx; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c7si1978461wrh.538.2017.10.31.12.37.16; Tue, 31 Oct 2017 12:37:17 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=LuCvnPMx; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DE5C2689B81; Tue, 31 Oct 2017 21:37:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 83BC2689A2F for ; Tue, 31 Oct 2017 21:36:59 +0200 (EET) Received: by mail-wm0-f68.google.com with SMTP id p75so993093wmg.3 for ; Tue, 31 Oct 2017 12:37:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=HWS8M3VGOqD3AL6Jg10t5asFuHmZGo68HtGwobH4irI=; b=LuCvnPMxQDrNp9upC0b0UhAxMZARd7s+hBqpnB7PK9TPxZpCjQjU4o93x7p3FTXkY4 l23JIVbAvSiKEYNoSYimf1JitZcS69Fxde3lEGt+GfHjAh4fuVBkDZeVdLWm8KTM/HN3 IbbEoO3rEbdkZjnhaOCBnUvds+n621/9PC7lS6jq1e34sTtzxEPrWpgFxB7U5ps4by0X LxmdY2eOrZPQQsl0o+CSMRGFXBvvyH2AfT8eLiF44rhO8dtBVSTYkBgeFgtoj7Ozw68x b+wlAij9otjACat2/b/mw2LBPp/n/d6cu2D9DeuwBfI2n/7Pfxan9TelOPrua926G1ry g8YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=HWS8M3VGOqD3AL6Jg10t5asFuHmZGo68HtGwobH4irI=; b=aSGQY0z6XPXwlxQH683ID+ZgjNl3ILE7blYnGZNOraW8GiJp4kBnSg4+L7G4/TuhCr AuO5VBa4crhdj95yxAF5dE33XkAiMm8QH8PRQLT8aEOV3e4oaYx3eF9jtp5Pu9F0Fdb3 g7qCKtTaCaOaMHpBN9GBKwG4te+jXN2NwPB1S+sB/XFZcnLPShL7QPJ7onF3uZVfR8Xh 8uTy4i07QCsYQyZNwgbDQ3yk4hdYWcz0joJvw+R4K9NLvWCHrWQXApwBMvnkCDRdlcd9 Hw5Pf2W6ZChbZ7hBgruFH94YgRgAOS0AD5+TKgyQozvO0z+uC6xLZqPjjAltiU8fuo76 aANg== X-Gm-Message-State: AMCzsaXpzLleDTvmDkbEyKwblRIh9/kDzgTcVOqUZhpNT5XltNN2+WqG zHB7cxSDveRNcjxgHdw3Y/Khjg== X-Received: by 10.28.66.25 with SMTP id p25mr2569554wma.154.1509478166788; Tue, 31 Oct 2017 12:29:26 -0700 (PDT) Received: from localhost.localdomain ([94.250.174.60]) by smtp.gmail.com with ESMTPSA id t189sm801001wmf.43.2017.10.31.12.29.25 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 31 Oct 2017 12:29:26 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Tue, 31 Oct 2017 20:28:44 +0100 Message-Id: <20171031192844.21319-1-onemda@gmail.com> X-Mailer: git-send-email 2.11.0 Subject: [FFmpeg-devel] [PATCH] avfilter/vf_tile: remove limit of max tile size X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Paul B Mahol --- libavfilter/vf_tile.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/libavfilter/vf_tile.c b/libavfilter/vf_tile.c index 87e0b940cf..8eb0dc2097 100644 --- a/libavfilter/vf_tile.c +++ b/libavfilter/vf_tile.c @@ -23,6 +23,7 @@ * tile video filter */ +#include "libavutil/imgutils.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "avfilter.h" @@ -44,8 +45,6 @@ typedef struct TileContext { uint8_t rgba_color[4]; } TileContext; -#define REASONABLE_SIZE 1024 - #define OFFSET(x) offsetof(TileContext, x) #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM @@ -68,12 +67,21 @@ static av_cold int init(AVFilterContext *ctx) { TileContext *tile = ctx->priv; - if (tile->w > REASONABLE_SIZE || tile->h > REASONABLE_SIZE) { + if (tile->w > UINT32_MAX / tile->h) { av_log(ctx, AV_LOG_ERROR, "Tile size %ux%u is insane.\n", tile->w, tile->h); return AVERROR(EINVAL); } + if (tile->padding) { + if ((tile->w - 1 > (UINT32_MAX - 2 * tile->margin) / tile->padding) || + (tile->h - 1 > (UINT32_MAX - 2 * tile->margin) / tile->padding)) { + av_log(ctx, AV_LOG_ERROR, "Combination of Tile size %ux%u, padding %d and margin %d overflows.\n", + tile->w, tile->h, tile->padding, tile->margin); + return AVERROR(EINVAL); + } + } + if (tile->nb_frames == 0) { tile->nb_frames = tile->w * tile->h; } else if (tile->nb_frames > tile->w * tile->h) { @@ -116,7 +124,7 @@ static int config_props(AVFilterLink *outlink) ff_draw_init(&tile->draw, inlink->format, 0); ff_draw_color(&tile->draw, &tile->blank, tile->rgba_color); - return 0; + return av_image_check_size2(outlink->w, outlink->h, INT64_MAX, inlink->format, 0, ctx); } static void get_current_tile_pos(AVFilterContext *ctx, unsigned *x, unsigned *y) @@ -142,6 +150,7 @@ static void draw_blank_frame(AVFilterContext *ctx, AVFrame *out_buf) x0, y0, inlink->w, inlink->h); tile->current++; } + static int end_last_frame(AVFilterContext *ctx) { TileContext *tile = ctx->priv;