From patchwork Sun Jan 26 10:27:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17554 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 30CD944B83E for ; Sun, 26 Jan 2020 12:27:53 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 150A96882F4; Sun, 26 Jan 2020 12:27:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6D97968A485 for ; Sun, 26 Jan 2020 12:27:46 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id y11so7398759wrt.6 for ; Sun, 26 Jan 2020 02:27:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=9Yd6vGVjdBryYNcXSJiJiwma7VfT5p2Et7G/KmyTazs=; b=cTIiQ+eHKTvE0CsHJAibG/YXy8bYlyUWOps7Q2kDxSyg32OunXREph22Oen0I/zS/D ndgSXNMXKeOxF6I98RqD7wCt4zaFlCiEUgseEKf+hPgYbqzCuaQ0SKrNNkTpqRt8ZKbv gNqqBu5Or25nuLUqUl7Z9L1v/ITLK1Ya4ZnFRZnMYW/x3ZvGMU+kiusDtDpDSGIc/0+T xSfb5VQSIute9rZdB+GGCDiSBp8IGrS3EOztPbzEM6zc/ExWtNievXCfZgdiiz+GT6OO aKTyl3SCk52N6i8N1t2A9vE99bN3hSTKNY4GKA5cUuZJMLNui5Q4RHVXFNvEyRcw7ifA bUPw== 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:mime-version :content-transfer-encoding; bh=9Yd6vGVjdBryYNcXSJiJiwma7VfT5p2Et7G/KmyTazs=; b=hIK725BmZcQMEo1YVA0r/6obJNx58r5lxEoMut65Qkoj+4vIAMLQub0/7qqlCvktuF E+Y/onAMe0TYrxVigTZgcx2fv+oL6BeuJLoEnk3z/C2KoVQS7/lBear8YGD9fP+PZQvZ fdIszt8M747+dm3Tb+l8ljRc/QNBBc1B1GIpQPGqLmtjhU5KN3LfU2H/rP9KlsgrSlTh lI/6dJ6vg4dkQIqzceZ7rC7qDkyF4cJdDaG+Nt6W9Ws2HusqUofGk7qNiOrmpefOQsH0 kfaRhZz427/iRc3UEO2gMo/KAo82RpU3HggcaWoInVMD5SEo0gptc7+fKf2RjjGYS1Pd oibQ== X-Gm-Message-State: APjAAAVVKmUS8HgqdMatkif3ie6jha11k9j5xjK2yDv0PbqonARnY1Ae JHPA3V6y3gbfn66U7hBFhO8UHn9b X-Google-Smtp-Source: APXvYqzkVkjzWlUBAE7kYYsk+3Uy3APshxU4HiXRDtVG1p9nPzstW3pDdMN5WaeaCoHutnsIu0xf8g== X-Received: by 2002:adf:f5cb:: with SMTP id k11mr15336553wrp.71.1580034465640; Sun, 26 Jan 2020 02:27:45 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc08bbf.dynamic.kabel-deutschland.de. [188.192.139.191]) by smtp.gmail.com with ESMTPSA id p5sm15182640wrt.79.2020.01.26.02.27.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jan 2020 02:27:45 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Jan 2020 11:27:36 +0100 Message-Id: <20200126102739.26495-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] avformat/audiointerleave: Check before dereferencing 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" In order to use ff_audio_rechunk_interleave() (a special interleavement function for situations where the ordinary "interleave by dts" is not appropriate), the AVStreams must have private data and this private data must begin with an AudioInterleaveContext which contains a fifo that may need to be freed and when ff_audio_interleave_close() was called, it just assumed that everything has been properly set up, i.e. that every streams priv_data exists. This implies that this function can not be called from the deinit function of a muxer, because such functions might be called if the private data has not been successfully allocated. In order to change this, add a check for whether the private data exists before trying to free the fifo in it. Signed-off-by: Andreas Rheinhardt --- libavformat/audiointerleave.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c index b602eb7105..6797546a44 100644 --- a/libavformat/audiointerleave.c +++ b/libavformat/audiointerleave.c @@ -33,7 +33,7 @@ void ff_audio_interleave_close(AVFormatContext *s) AVStream *st = s->streams[i]; AudioInterleaveContext *aic = st->priv_data; - if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) + if (aic && st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) av_fifo_freep(&aic->fifo); } }