From patchwork Mon Nov 20 21:31:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dale Curtis X-Patchwork-Id: 6238 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp4436452jah; Mon, 20 Nov 2017 13:31:36 -0800 (PST) X-Google-Smtp-Source: AGs4zMb0HDNPuzR53WU5UM3Y1EiBcwDh2Y75gYdGdi0QiglbbsgTP6kDagQEJS6OlK9BHGsWB3iO X-Received: by 10.28.206.8 with SMTP id e8mr10479687wmg.80.1511213496240; Mon, 20 Nov 2017 13:31:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511213496; cv=none; d=google.com; s=arc-20160816; b=komsuZcGpi+55lNafjzQavmML1+G+cg/+nT8eB/Yj53rcXPlYbJHODpimGHI7rYzde oYOm5KCf44MXVyny0mW2Ux+dNomq/aA7G4P7V2yxvwYokkPL61DcVkp8wVgDUZESXB5M MASAhoZsgMd9luDfm61W8r/SY4pYCdiiju1rWHSBfzLKjy70DY55nkwOnW3pVC24jAOm 2jcsd0WibO/i1R1uFH6HDlXFdNOMLA43yr41apfNQo0O/fT0DDrvnCQ8eyb/0ZMI/3ur pSXBWmWdIt7mrlaqQwoN1kRi1UoZ/45OXKcZ0KhIRQFoRIU8ntZcojuKHvO8ZLwk8c4Y cUbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:dkim-signature:delivered-to :arc-authentication-results; bh=OPVcvR6UEzxavDB/HJ1uDDEuzi95Xv+VFjzehcBbbTo=; b=Ko+3dP+nFQ1GvoDKo3GjzyC89TG/18Sub99Dzb/rw0DOvK8nmP7UIJkWew5mH2g1xL MmtYITm+9ox6s/ph4iWpPBIizoKF1kjk8vBdCWlv5ycz5pxs0Ddaox2Gkor0egruIrJy o8FnssS4KXnyzzdxEDRY4yEefOYYALcjWTtgrn6hCbgvTKi08lw6xMveG2+io10hkoCE wLSqF4dqQ5h9qwS7Z2SmbHX2AEtYXVZ7Eb0jx1bymIv719XEp9Dmt8yI3aEISLZ+Hdvb 6x0fS2yIAGs/DvossrrdOq9A2vp7dbaf7F8sWWrR/Z8xe6AAAU/zIPMESq/DyR+MQ4X7 c0WA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=jCk7HeGF; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=KzCf9d50; 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=chromium.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 43si3559803wru.9.2017.11.20.13.31.35; Mon, 20 Nov 2017 13:31:36 -0800 (PST) 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=@google.com header.s=20161025 header.b=jCk7HeGF; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=KzCf9d50; 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=chromium.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0F6B1689E78; Mon, 20 Nov 2017 23:31:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f176.google.com (mail-wr0-f176.google.com [209.85.128.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EAD1C680B8F for ; Mon, 20 Nov 2017 23:31:10 +0200 (EET) Received: by mail-wr0-f176.google.com with SMTP id z75so8069476wrc.5 for ; Mon, 20 Nov 2017 13:31:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=pgWxb4bobhuhoISqT2ookzL0z3+cwb3xAcHTdDGPz+I=; b=jCk7HeGFx5MObkMiwC3T90yw/VGBiMbR9ROP570r9tDHcLLfKooCQh4lvQNbEjOZU3 XAFwYoGpJxA1YkimEo6nB/RDQSNfsAMdnsDj2kjVY/k0u9ZHVwXPUSBnUVIgdHjHDVAx 0d70KZSr+5l+NPg3KNzxwe+plafdTUxWI12DERtw/gNziv4D6ZY7NJagJYcgm5X5g+xW kljQzyY63JgLeKPZ8rkzWFkjSntssw3GDEVBDj2Nkf+wUBMc9CElvFdtrYhGhKtTh1W2 tuRT54ZGx4ZJAPu1EjDBvyaZ/iwdNo0mPA635CT9tNEJhOA5k2l6fmb2phO23bXqrX5J C6Nw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=pgWxb4bobhuhoISqT2ookzL0z3+cwb3xAcHTdDGPz+I=; b=KzCf9d50RvQI5ATTYYAuv3f4prNExZwmjAnD3N0JnlKyPNOknyDCShspWIgBLZ+WMX hYz4MeDk7LTPmbL7jqLm5g2T4UNtbMeaoyhngOfzTCVQx5IY+XjKYLgGBQb4mbcJHsxJ BrDNBZCaSWcNOnMMDBd3lUOt1jDxpG/KCNETs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to; bh=pgWxb4bobhuhoISqT2ookzL0z3+cwb3xAcHTdDGPz+I=; b=im6ZLjTpp2A0Ey9NnOePcaqp9ewlkXgjYDGf9Y/i5lD8L+ERELb8bzeiyVvzknhDBd EojnLWdi1gkQEzoiy5ws0E6Oh+78Qe77sXkncv9C9jmXzB+XVdnnSHKvmZMEkKhzD9wn w7oVoQwHDIn0o0EamTR7ou0TDjb5KQdWol4dCDNMUol/W4A/j2GiR56hA38G3vN1fMfh JCDKIkJWwz7Ehn4o5KHhBvXRtJWPH4ErdlSC4RVKh6t+QkgQ7oT2he0IShuKOzS0BPII mUqfFZfr8YnJumoCfKzKHsh4zXmETBN9CSXu4xlwix4Cn3c9D+pODx+qAYHUcNagTNqB yQYg== X-Gm-Message-State: AJaThX7ysjYiGE123KCdzHxgNS4yb/QlC2HFwhnrg+AGPYMbrpalHiwi cFS+ZnLW0Ka38FcqzyrBt5rFgaAvjy1ycRxWmR3iqZOx X-Received: by 10.223.131.166 with SMTP id 35mr12487493wre.84.1511213487421; Mon, 20 Nov 2017 13:31:27 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.161.4 with HTTP; Mon, 20 Nov 2017 13:31:06 -0800 (PST) In-Reply-To: <20171120203409.GO4645@nb4> References: <20171118022254.GD6009@nb4> <20171120203409.GO4645@nb4> From: Dale Curtis Date: Mon, 20 Nov 2017 13:31:06 -0800 X-Google-Sender-Auth: ZVUyOz3-TQdaLXRvuAIhUzBoa4s Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: Re: [FFmpeg-devel] [mpeg4video] Fix undefined shift on assumed 8-bit input. 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" On Mon, Nov 20, 2017 at 12:34 PM, Michael Niedermayer < michael@niedermayer.cc> wrote: > On Mon, Nov 20, 2017 at 12:01:11PM -0800, Dale Curtis wrote: > > Derp, that's the wrong comment for this; I meant that for another thread. > > Returning an error for optional user data seems a bit harsh, but if > that's > > what you want, I'm happy to change it. Please let me know if this is the > > route you want to take. > > it could print a warning and continue > but there should be something, the build/version is used to do bug > workarounds. If that is done incorrectly it can lead to decoding issues > Printing a warning sounds good to me. Done. - dale From 2f0ae7719d20addeac4a8297a64eb57f8df9cdfd Mon Sep 17 00:00:00 2001 From: Dale Curtis Date: Fri, 17 Nov 2017 16:05:30 -0800 Subject: [PATCH] [mpeg4video] Fix undefined shift on assumed 8-bit input. decode_user_data() attempts to create an integer |build| value with 8 bits of spacing for 3 components. However each component is an int32_t, so shifting each component is undefined for values outside of the 8 bit range. This patch simply clamps input to 8-bits per component and prints out a warning that the values were clamped. Signed-off-by: Dale Curtis --- libavcodec/mpeg4videodec.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 76247c3b8c..11d4e08986 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -2153,8 +2153,15 @@ static int decode_user_data(Mpeg4DecContext *ctx, GetBitContext *gb) e = sscanf(buf, "FFmpeg v%d.%d.%d / libavcodec build: %d", &ver, &ver2, &ver3, &build); if (e != 4) { e = sscanf(buf, "Lavc%d.%d.%d", &ver, &ver2, &ver3) + 1; - if (e > 1) - build = (ver << 16) + (ver2 << 8) + ver3; + if (e > 1) { + if (ver > 0xFF || ver2 > 0xFF || ver3 > 0xFF) { + av_log(s->avctx, AV_LOG_WARNING, + "Unknown Lavc version string encountered, %d.%d.%d; " + "clamping sub-version values to 8-bits.\n", + ver, ver2, ver3); + } + build = ((ver & 0xFF) << 16) + ((ver2 & 0xFF) << 8) + (ver3 & 0xFF); + } } if (e != 4) { if (strcmp(buf, "ffmpeg") == 0) -- 2.15.0.448.gf294e3d99a-goog