From patchwork Mon May 21 22:35:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Thompson X-Patchwork-Id: 9042 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp806014jad; Mon, 21 May 2018 15:35:41 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrqUi4LFtreoqs4yJXRR0wtRG+3FLAiBBOCOmzd/BngYLo60VzHBX9QD3umbGO7tGRKzKO9 X-Received: by 2002:adf:e70d:: with SMTP id c13-v6mr6226088wrm.203.1526942141221; Mon, 21 May 2018 15:35:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526942141; cv=none; d=google.com; s=arc-20160816; b=qFbdT0w15R1rTVgg1vKN3xCx5Xm8zvKsRDK3KH57fxDUDlXt+ViumlSD/mdsYfal1T tka42Q0jJhF/Ai4TqHA23PVxryBl8ixYVEcfPkt1GgMmov+gFTfLwqgfOSS8miti65o5 Kz8OT31FpP3GoY0Cnj5TsZpedon0O/UHrVflPqH9+4RURAWL6PFRa/JnGkrHwiHrUM/f MRrYAYtUbw9mdl+Q9C6jMwMEIkVaSl6aSHwzqDGadbqZOoQS3xC6x6bxxwmrNjcs+9MU uK9vxYRQ4hvt7wHokduS49CKvJL9Tw2Y6YRLKi2r2E5o17yuZaGE/lvfEhMh3LyEJCRV F3Ow== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=1OWAg8ErwTo2hhCjuHpLUEiZk8FLDaNeXYYkYCrsXqM=; b=MIxeIJBU1JWwrSrMZVYc7bMWBuOgFGsYvulz9vVtKgMg332tLYEvn9djmUjh4+6lob PWS/gZ0Y1x+r3cHX6US62gXBB7eR6aKpQkQ9fk5PVF7AW015pAMowOzGiRXdZJGpjkWK P7DoHdI4JcIXBbza+GywUOdtD1Gy7bG1y7GZFokVb1zViEl7vrS4i0C/HXB9Vkf2EmDp vWQQp1T3jjm0GMlWQiJkI7nW2ToMoPVir3saxZwfYRks2uwl38Tla0wEmtAy1eQGFkTT vkbwhkUYQQ+9cN/beGQsQNTJCoy+2sZUivU0rJwXdWhkodo/rgVcuqmjY48QshKpGQ2t R6VA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=WOscayQV; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id x6-v6si12502068wrd.208.2018.05.21.15.35.40; Mon, 21 May 2018 15:35:41 -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=@jkqxz-net.20150623.gappssmtp.com header.s=20150623 header.b=WOscayQV; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 499AA689CFA; Tue, 22 May 2018 01:34:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f195.google.com (mail-wr0-f195.google.com [209.85.128.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3D005689CBF for ; Tue, 22 May 2018 01:34:37 +0300 (EEST) Received: by mail-wr0-f195.google.com with SMTP id w15-v6so9933093wrp.8 for ; Mon, 21 May 2018 15:35:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=esfK/8x3wRW84JNldFTSbFk10fOU70ZoGu1Qexaudvg=; b=WOscayQVAx0FZsrSYLM9GDPrpDLWP3qb3v4cwe3D9dxMDGrGqLzz32jU+BOIXtjJfP 0Bzga7zn4da+fK/kui7S/Tb3BqWsr4yPCXsT3UIvpp7JtHruAJ4kJj78dAAzk7EYHFSf KLvfLn4+uD2+9ZM166M6bmpv0uHMnomPafZewqcUC1fzgB6mPgmR0RTZSTJz5z5xvfpp UiIyahUfHrPK+G/vqf0FLO5VWl45OT99SC1BFfSXeKBeeeOBPlNuHZWMgUDfNt8hRvqk PrDeEZRomb/5Us6BqRrMM9sDE10+5yOlB10UctPsoQfWqs0HLQdYgcbXR4rSFbXoxj69 POAA== 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:in-reply-to :references; bh=esfK/8x3wRW84JNldFTSbFk10fOU70ZoGu1Qexaudvg=; b=KTAhS3nSeOTEXA7c9JJaq6KbwLR0HzigC8d3X5hzeIyQ82qOkUBsH24zVudU2ATw49 4ldwfWCcOZoofMiesy1qjcKz5G+4N7Q1zZQu1hbvZTDV4W8/BmsxFtYPDo4dhS2JKNrX FVC5YgTr/DS60KKA8+M9EjQDTfxo75d52sIQVm6srQvOOwTy3ppu5LuK6qIporLCzRM6 wvkwhHyFH3qgzcWqZ/77nF2mAp2tPTypjW7eBALi5gPp5KEnCoAi0Ef8KLbqrPQbX5FP rdV+orjq43rcXIiGOWrx6FODgia12wn7HuityeBR+0g7kS4LcwxlbL2a1X1t2oXY8H3L QhPw== X-Gm-Message-State: ALKqPweLmIMlYKTio5/EAbjBSWnwKM7wImQldUKpZ+TKE2bl852+/kFH gnpaOJZMqlna5JA8IaBGhHvHk8hu X-Received: by 2002:adf:8a8e:: with SMTP id y14-v6mr17704818wry.267.1526942117640; Mon, 21 May 2018 15:35:17 -0700 (PDT) Received: from rywe.jkqxz.net (cpc91242-cmbg18-2-0-cust650.5-4.cable.virginm.net. [82.8.130.139]) by smtp.gmail.com with ESMTPSA id e7-v6sm15995209wrn.88.2018.05.21.15.35.16 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 21 May 2018 15:35:16 -0700 (PDT) From: Mark Thompson To: ffmpeg-devel@ffmpeg.org Date: Mon, 21 May 2018 23:35:10 +0100 Message-Id: <20180521223511.20395-3-sw@jkqxz.net> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180521223511.20395-1-sw@jkqxz.net> References: <20180521223511.20395-1-sw@jkqxz.net> Subject: [FFmpeg-devel] [PATCH 3/4] hwcontext: Don't segfault on invalid arguments to transfer 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" The code previously assumed that src->hw_frames_ctx was necessarily set if dst->buf wasn't. Using non-refcounted hardware frames is not allowed here, but we can return an error in that case. --- libavutil/hwcontext.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext.c b/libavutil/hwcontext.c index 745016ed7e..5859443cf6 100644 --- a/libavutil/hwcontext.c +++ b/libavutil/hwcontext.c @@ -441,8 +441,12 @@ int av_hwframe_transfer_data(AVFrame *dst, const AVFrame *src, int flags) AVHWFramesContext *ctx; int ret; - if (!dst->buf[0]) - return transfer_data_alloc(dst, src, flags); + if (!dst->buf[0]) { + if (src->hw_frames_ctx) + return transfer_data_alloc(dst, src, flags); + else + return AVERROR(EINVAL); + } if (src->hw_frames_ctx) { ctx = (AVHWFramesContext*)src->hw_frames_ctx->data;