From patchwork Tue Sep 3 16:09:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony Delannoy X-Patchwork-Id: 14885 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 29A6C4493CE for ; Tue, 3 Sep 2019 19:09:47 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 036DE680BCE; Tue, 3 Sep 2019 19:09:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yw1-f49.google.com (mail-yw1-f49.google.com [209.85.161.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C6C32680879 for ; Tue, 3 Sep 2019 19:09:40 +0300 (EEST) Received: by mail-yw1-f49.google.com with SMTP id n11so5988526ywn.6 for ; Tue, 03 Sep 2019 09:09:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=9BOgnRc6Gp/f4klFa48sUc8t//1CzZKmw5EY8dq0LWg=; b=fDYWhwGqsyIrnjgsVf1mcwsuNELUlYx707IrXUU5MjGcmB0Dca+QCx3AEFe/aXjeXX ZzcXKBrWqcXgXZGH15DgwVvAVDA+SXGaK4luSG2QZ92nicAiGD7emAfahumDYVNu6gye 0cJ/VDbwCsYxiMVNJ9FPnZ1Mt27UssJ1h9e62EVzINMjtjdehfYXxgVJ1Q5z4A/QKnhm NaTpBwOWvGLxJadKi2bh2zrexA4q0tH4WnZ28Av+lrCea1pGWsNF1x7RDYox+KiCgENL rlASIInQn6jwu+0P759dU8MGJTDcpCgDeKUlYRFhpru6s916/mxiA5lAD879hg9zDRd1 GDJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=9BOgnRc6Gp/f4klFa48sUc8t//1CzZKmw5EY8dq0LWg=; b=AfTf8/7g5tanWO9iLbnjDGSTLk2dMKi9KSyi4mh+o8wydvrTp7LT3Gx/aGF708u0WC d8NR+IcUmnp260E76tojTpiNTuMQvegqyGz8N5Nxpk74Kr7Hgprjv7/FqiKYdC4FQB+j L5gDq3+lVIOvchmfPrbm0bc3qyk0dUtLoybo9e6M2VOMeRc86fhKK+HNRSW8oxaZI5MS f/hbnH+mPDI1i4zfImrDbNBPjkBtK9UpgCxqF8ITj0r+ANDHyuNY/kX++7lxjMP8IEp9 os5kSZf3wDhKLGw5N5awzdlk2YPMKiF+SpvYf6tpeG5BTNLJQyHVxKHtVCSc8F8DDBN3 rcHw== X-Gm-Message-State: APjAAAUAMfmx1sokBuWEj0uV3gHsWAOQ7xUGoEOrZvYLxo8Q9UreT5DM 9nLGF85qNvz6MMVeTRGEVoYhRuyBrOjci2jF6kKRHw== X-Google-Smtp-Source: APXvYqx4dmAOfQCSRJyaOfuuHeiOdzN4rb3i+lOsH+RSpafEsL4F3Vzo2DucCEwP43M7FigHghlzgCf2vuv0Gskc9OE= X-Received: by 2002:a81:528d:: with SMTP id g135mr12868986ywb.445.1567526979025; Tue, 03 Sep 2019 09:09:39 -0700 (PDT) MIME-Version: 1.0 From: Anthony Delannoy Date: Tue, 3 Sep 2019 18:09:28 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avformat/mpegts: check end of init before treating SCTE data 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" Hi On some DVB stream ffprobe segfaulted, it was because of SCTE-35 data packet reception before the end of MpegTSContext initialization. On this patch I check for `ts->pkt` availability before trying to generate a new SCTE data packet. Anthony Delannoy From 6dd92519ce5f7c85ca35c7227d35ff49fa6de3ef Mon Sep 17 00:00:00 2001 From: Anthony Delannoy Date: Tue, 3 Sep 2019 17:54:24 +0200 Subject: [PATCH] avformat/mpegts: Check if ready on SCTE reception On some DVB stream SCTE-35 data packet are available before the end of MpegTSContext initialization. We have to check if it is the case to avoid a SEGFAULT. --- libavformat/mpegts.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 58902527c5..0415ceea02 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -1725,6 +1725,13 @@ static void scte_data_cb(MpegTSFilter *filter, const uint8_t *section, if (idx < 0) return; + /** + * In case we receive an SCTE-35 packet before mpegts context is fully + * initialized. + */ + if (!ts->pkt) + return; + new_data_packet(section, section_len, ts->pkt); ts->pkt->stream_index = idx; prg = av_find_program_from_stream(ts->stream, NULL, idx); -- 2.23.0