From patchwork Thu Jan 30 09:58:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Alfred E. Heggestad" X-Patchwork-Id: 17623 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 E1FEE44A53F for ; Thu, 30 Jan 2020 12:05:32 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C1835689EFB; Thu, 30 Jan 2020 12:05:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E8A316897CD for ; Thu, 30 Jan 2020 12:05:26 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id z7so3202189wrl.13 for ; Thu, 30 Jan 2020 02:05:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=yRIr8cLFPl+0oHcRaxhFGgMZAfkdUCAgZ1kbsq7Wfus=; b=X+twv5X1NrdrOExiBZ31evMpcllZX70YN11zGMMsog9cgV1WjpQzQGqVJ+2Ic+qNIr MPW8Xosrd+i2KurVxJ5i5FjvRlAdX2EEiTNp30FBYqqKkQqMD3yGkSeJao5np+ZE8n2z ky/OIB5C54HuIFfBqjUw3eyhR2lQv4HD04jAOMSniT/zqxia3VeelEiSmXwHCJdqWjjh 1Q3E+cX/WMFBvvbGa64HF9Hx3rpO97jcb/ZK+z9ryXKoM96u+x2r2KV8hXG3kRZ0vM9Q HeG4BfcTvu1GqNDLOoz5btCPbuVF1AWzIKqzaVskWJ/YL5WXYTxRZmSPTd4Md6FVTHaU Mqxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=yRIr8cLFPl+0oHcRaxhFGgMZAfkdUCAgZ1kbsq7Wfus=; b=VDI0X/EK+DBQfpjw3SV2IkUK4q7ta0DD5AoE0cOJhlSerh4pEBDUun+plUsWl+kjAo tJQZkWi8ZW7yTULy7CQmzCklrv/r/Q8Pd4k/NO6SpBSroYN3I0S5ugH8mgdfhL2EGCNF lSdkaYIt5FFXCTy7tqGEC3FFQfRtlu/NCpLWzwSZ1SNN40boyiYfZRSKalauoiIKXc78 DBEEmdsAY1/T4CD97b2MHqlX6D8cELP0SJ6U6Mg36IMujQdoA+3yvSvVRN/ve3Ze6wce NTys8pFzlcKe9wAVu888iPO4LXRqpxlP+KVby0wmAh7MAGrGy12VCYQK8ruoxYQ/A5Uc so8A== X-Gm-Message-State: APjAAAXfo7p1YzPEgvfzRNpbksd48yGurcy9s0J3tzaFWfW/JbdPgD09 Ls8yVldOeqKLdISsZcFuGN9tewNq X-Google-Smtp-Source: APXvYqwHCcDV22crzF8ca/HdySwH7OyK0b2EnX90FLpz+k0fNAQZu4HQpwxUNboVr1a05c8rHaxlzA== X-Received: by 2002:adf:db41:: with SMTP id f1mr4770133wrj.392.1580378283468; Thu, 30 Jan 2020 01:58:03 -0800 (PST) Received: from Alfreds-MacBook-Pro.local ([2a02:d8:0:9:4d29:ca1:e690:fa34]) by smtp.gmail.com with ESMTPSA id r14sm4070209wrj.26.2020.01.30.01.58.02 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Jan 2020 01:58:02 -0800 (PST) To: FFmpeg development discussions and patches From: "Alfred E. Heggestad" Message-ID: <21f10d45-db51-62fd-9fdd-3d01b8eecd3e@gmail.com> Date: Thu, 30 Jan 2020 10:58:01 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 Content-Language: en-US Subject: [FFmpeg-devel] [PATCH] dashenc: check pts to prevent division by zero error 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" this usecase will cause a division by zero trap: 1. dashenc has received one frame 2. os->max_pts and os->start_pts have same value 3. delta between max_pts and start_pts is 0 4. av_rescale_q(0, x, y) returns 0 5. this value is used as denominator in division 6. Bang! -> segfault this fix checks that max_pts > start_pts. the fix has been tested and works. please review and suggest better fixes. Signed-off-by: Alfred E. Heggestad --- libavformat/dashenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) os->muxer_overhead = ((int64_t) (range_length - os->total_pkt_size) * 8 * AV_TIME_BASE) / av_rescale_q(os->max_pts - os->start_pts, diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index f555f208a7..3b651b9514 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -1883,7 +1883,7 @@ static int dash_flush(AVFormatContext *s, int final, int stream) st->time_base, AV_TIME_BASE_Q)); - if (!os->muxer_overhead) + if (!os->muxer_overhead && os->max_pts > os->start_pts)