From patchwork Sun Feb 10 20:12:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 12034 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3DC4A4464DE for ; Sun, 10 Feb 2019 22:12:20 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1710168A1F0; Sun, 10 Feb 2019 22:12:20 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EE3A368A08F for ; Sun, 10 Feb 2019 22:12:13 +0200 (EET) Received: by mail-qt1-f194.google.com with SMTP id y4so9950896qtc.10 for ; Sun, 10 Feb 2019 12:12:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=9Qo7MPP5vfyPaC+WM+JaBHCxv9x40hZBliZ5yufRm6w=; b=SSwsGtRGzqOO17acl8S8CCEkbkDmCBLTTuizuxyN3entWcKqizQcH+c81WYUamUEP6 3lNSK2+lsS+xIlLbF3GOKOjRFGRJD/zBy5CZ0hhDmEaieZM2Z+ddXuYStrQapWfRtw/M OLVh3MQmGqtrJzmL0bbjRRKiplK6HuTyarz0hUJ0Wkesi7L/w0M+rD92o5/mAjQLnSO3 ucH9LyecEhEOqkxUAvS8z2XryxwCvOO5v2uzk3br9/rx7QSIuzVpqsVcbjo6sbXxBOqQ bOZ2P56t08qTzCWFlbsJyHT2MKsBsWTJ7wqeDLlH2PSHtizibF+GH33KkukC1kmVCdjU 71Vg== 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:mime-version :content-transfer-encoding; bh=9Qo7MPP5vfyPaC+WM+JaBHCxv9x40hZBliZ5yufRm6w=; b=TZhZwAU/jeWMFCTMpAPpnJzQrnM/DfYSPl7u/SqbgT0HFCpHuav4JNvBss7JcL+/mV h4Ku9wBiq1goNrH5cxA6mJWRZ7llJ22ReHDDJaHQHU5DTMYI9isEdXLh13QxQjXPDfs5 WQy8wCctZhKNvipkF6WVAgq5kZuAQG5cuarbW6ZxqoayMF5F+UU4esFslfcpLw9mfvTE hCTrjHi/3+Q5OHrYMRzmLYwZgY66KErQaQx7wB0S+VJKug5Kcqh3caswrXdP/aSSCjM9 bzeaX+3l0LJ+u4YQoJq+bgjzhjaS4jvST8eKzPiByq48eCQ1zRkZsds9JEe3ZzVMEDgZ 2f+w== X-Gm-Message-State: AHQUAuYpcHVDuoje6RG+VwSy8bZIdhdPnv6dXlvvtmWXHG8ks4vxPuVG Q2H+Ao21c5nbCgoXV88vL7JM5wH2 X-Google-Smtp-Source: AHgI3Ia6dfz7PsScjS/O9FpCz3EDcuurr0zOFl+wSoJWCz9i74dfeqPg/Q0hwJSt7v3A1svLp3U8CA== X-Received: by 2002:ac8:3501:: with SMTP id y1mr14782136qtb.209.1549829532176; Sun, 10 Feb 2019 12:12:12 -0800 (PST) Received: from localhost.localdomain ([181.23.81.215]) by smtp.gmail.com with ESMTPSA id y6sm8774656qki.10.2019.02.10.12.12.10 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 10 Feb 2019 12:12:11 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 10 Feb 2019 17:12:00 -0300 Message-Id: <20190210201200.2480-1-jamrial@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/cbs_av1: change the assert in trailing_bits to accept zero bits when reading 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" If nb_bits is zero when reading an OBU, then it's not a bug in CBS but an invalid bitstream, and we should abort gracefully instead. Signed-off-by: James Almer --- rav1e is currently encoding invalid Metadata OBUs without trailing bits, which are triggering the assert when parsed by CBS. This change makes sure to instead report the bitstream as invalid and gracefully return with an error code instead of crashing. libavcodec/cbs_av1_syntax_template.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c index 48f4fab514..02b4ed221c 100644 --- a/libavcodec/cbs_av1_syntax_template.c +++ b/libavcodec/cbs_av1_syntax_template.c @@ -45,7 +45,11 @@ static int FUNC(trailing_bits)(CodedBitstreamContext *ctx, RWContext *rw, int nb { int err; +#ifdef READ + av_assert0(nb_bits >= 0); +#else av_assert0(nb_bits > 0); +#endif fixed(1, trailing_one_bit, 1); --nb_bits;