From patchwork Thu Jan 18 23:21:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niki Bowe X-Patchwork-Id: 7340 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.156.27 with SMTP id q27csp126507jak; Thu, 18 Jan 2018 15:29:20 -0800 (PST) X-Google-Smtp-Source: ACJfBouAFH6mZ6CaMCNM6AxJHN9hWF0tKAlrbSQtjYAYll3VNWIT365rPDGBW0iTmAu3EJeyf3qL X-Received: by 10.28.230.151 with SMTP id e23mr5821806wmi.11.1516318160047; Thu, 18 Jan 2018 15:29:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516318160; cv=none; d=google.com; s=arc-20160816; b=P9frOfPSCxcCYOmMOxud4/N2zsq54CxZSGMUOZSyoIa0irNklUzxcNjisdb7mNi60o 1U+6OKlouicccjHx3u1MD2i/EQm+vGy7MjaNI317ElZ/r1xppod3o4CNUhuJ5aDmULpm T8r/0aiQ8GEPVsWMM46nJhq7Z1cTMjCwaPK6Ovo9GASYth25bSQDDbhGjAjv/l2UVN3K phUioPgGbrHZ2/vHtDDrhwhazqsz5Qps4yqr/QIi16YBJ6STHUnLC9cG/DqExK8GgGvW ATrmX+K1Z7X2jnatdWh74WqRpMvLUscso3MvgofCnwDgSADCLGNhxgZcgiLS15IbqTlw m8/A== 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:cc: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=IsoutTsc9sQb407j2C+vjOGmiw8mJGIl9s7SzgIcK2U=; b=lhZrCE5Bqx+x33P9xLf+OajGJrQw+IIZiVDw/wI0LV0l1lvXL/zAvhumgJwbohvbPa gA4MmybDejiw1VtI1wpvyhh/4q/l+C4lrxYtSq6Ej8dfVbDYLYu5lhcGwz3J0KxdiyXj rbRgvO3RxspZi6l002ZAM20Y5hB4I5iPBIDiVI9awxB9IyTk50Jt0wRThsg6EG2T7drs AYkLko3h/WDA/rOiqJxxB1LG086Wtq6gBFys4lRdrsfq4+pi+qBFT76wny2nHjWcpkSu MaENe5vqY2smODL1LQK0VdcN/lVbPxBZf1oVjp2NIliwNzgEWkgxDUKX37B9JfLkON5O 5fdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=ZHnGaBvm; 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 v191si10175wmf.132.2018.01.18.15.29.19; Thu, 18 Jan 2018 15:29:20 -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=ZHnGaBvm; 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 85F8A68A2E2; Fri, 19 Jan 2018 01:29:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f194.google.com (mail-pf0-f194.google.com [209.85.192.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F8C6689DC2 for ; Fri, 19 Jan 2018 01:29:11 +0200 (EET) Received: by mail-pf0-f194.google.com with SMTP id t12so15928074pfg.2 for ; Thu, 18 Jan 2018 15:29:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=UMuE/CnTSLn0/OrvR466KxY6Aaifmc7SEni9cg0kB0c=; b=ZHnGaBvmvT8BGq0SzqGfhSRnbJ7tFbfm8n1XjlXqiwyn+5AlQmL+KKlV+G5FTk8G1t BIceRqAM6HalBJHKOM4SF5XLRFjRIMICnpJrbvH+vVLr+htV1nhXP1CQ449TFLL+DJ9h z4XN9DZGyexLisAGBVui0+9310GZC2fFieYnxD0Uxfwy5f3Siq/5IAVK1RaeESNOF06D Sq4vouN+oCSuzyEgO5bHp0PkSzURYveJLG79uk3CJVwtPyxsg6qL+mUSPYDKgtwibnPk 9L8hC3RCUGwPdTONLZ+cn51mBOnMY0uvgXOqZtzRD4yCaWT5xK1j5f1Vg3UHS8czMQtq nz9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=UMuE/CnTSLn0/OrvR466KxY6Aaifmc7SEni9cg0kB0c=; b=Ih1fYnw0f9a8gS34DFaI0aNmlFE04tCpT3ad2SGs4QpWdFQFRdtROzwd8PbdjTClnO OIXXT96brAEGt4r6ZRtMe2G8EFH+7aRMSZpG4XqBlB3uJTFzzzXUKKlQQRe1QveJCXD9 MpF5aKZ3UmjnQUkNwBnBwhd5j6gHfcVeG6CqqZlp2+1q4edz+Qtlb+6AO6dB1PqO+Z8U anc2+pyLtk5AxGUb7fIGdrebaT55syFc2UOhn7i/uH+dRhXaKMqKNw2PYQpT/L96xlCt Hx8htTgx/LwaV6gcPxs4KdCBDttc5hKw9UZPB1+Kf6iMi5SBgaBXr594xQ5RyPzJERDj pdHQ== X-Gm-Message-State: AKwxytcctoacKFZqu/5eM65jvdgk8IKpGBy+k9bOuPHFkC1O9Amn2ENw QV5w8H5HcsPHzb8pKi91uHq3Hjf3SiU= X-Received: by 2002:a17:902:8e86:: with SMTP id bg6-v6mr586774plb.402.1516317741661; Thu, 18 Jan 2018 15:22:21 -0800 (PST) Received: from nbowe.mtv.corp.google.com ([100.98.2.61]) by smtp.gmail.com with ESMTPSA id d6sm14430657pfc.35.2018.01.18.15.22.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 18 Jan 2018 15:22:20 -0800 (PST) From: Nikolas Bowe To: ffmpeg-devel@ffmpeg.org Date: Thu, 18 Jan 2018 15:21:56 -0800 Message-Id: <20180118232156.108823-1-nbowe@google.com> X-Mailer: git-send-email 2.16.0.rc1.238.g530d649a79-goog Subject: [FFmpeg-devel] [PATCH] Fix float-cast-overflow undefined behavior in matroskadec 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 Cc: Nikolas Bowe MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavformat/matroskadec.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 496499b553..cd9e1f56c2 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2096,8 +2096,16 @@ static int matroska_parse_tracks(AVFormatContext *s) } if (track->type == MATROSKA_TRACK_TYPE_VIDEO) { - if (!track->default_duration && track->video.frame_rate > 0) - track->default_duration = 1000000000 / track->video.frame_rate; + if (!track->default_duration && track->video.frame_rate > 0) { + double default_duration = 1000000000 / track->video.frame_rate; + if (default_duration > UINT64_MAX || default_duration < 0) { + av_log(matroska->ctx, AV_LOG_WARNING, + "Invalid frame rate %e. Cannot calculate default duration.\n", + track->video.frame_rate); + } else { + track->default_duration = default_duration; + } + } if (track->video.display_width == -1) track->video.display_width = track->video.pixel_width; if (track->video.display_height == -1)