From patchwork Tue Apr 12 08:15:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 35283 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:671c:b0:7c:62c8:b2d1 with SMTP id q28csp1454528pzh; Tue, 12 Apr 2022 01:16:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw+8C7oSjGd9Vf9hGmRdd/dLCevVe7AzLLcApsz1/9kvItAAnr69SS3cFGqVZLwuaxMxfL4 X-Received: by 2002:a17:907:160b:b0:6e8:58c1:8850 with SMTP id hb11-20020a170907160b00b006e858c18850mr13733448ejc.284.1649751412988; Tue, 12 Apr 2022 01:16:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649751412; cv=none; d=google.com; s=arc-20160816; b=XEQfFh8dMiaYfmSZwh4RyVS/TBDg2E2uDDrxPr97Olhx2smrh0sA+he6+5cM2uqpMu bzcEVf81+7Iud8LvEre0dQWnlgTmDZl1y46/PlZhsDNY2FSfE/M3TlTjBJQrZ0R1COZS kia9bCORlp12qwJry65yNw5mxVxSMRqnb/S2sM6cRcrrLw61JmxHRgsuESQMp+A3hwdB 2H8nExvZ5e3lnVu0Mzf3LkIuVuouzXKknbkteV7WJQ1JwgjwVnAwJNa8eHEaQfGu4pki I8wFtrRqsRuv0cw2pn2/BtCnVB/clEUbbIKY+DI1isVpp1c13RpoQwXizHeCuOsFUa3S pQVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=uhHSy09l+Y6Ve6bYYGOnQt0I6nEVMXUA9P0DPYXp1mo=; b=ovrLCfGcMIZL3Vdrd9q+OcvOgCjFu+qnBz8ZEbT0WHBj3vwX5LuYgBooqsoVTt4wSY A9IjvioLMx6/JVduAALeXxCRLn/x6p3PGTTFO0pyPzy/A/7P7hM0lgKMw9/bt7ZSDhbK OgxSrgQPjXcEXg7bw7u9LFviOnQmCl7FWJnm6OYei/mTjk1ouLHb6rIoHUvB5cgpTaba 439ft+i5p9kafT4289eH0Ggx1YBWbXWV9u8RuDk7ziFo/AA+pzzTWTCUi+key/bRmrwj CQ+L+yl5748hdMN747YMJ4d1hcU1CL8+E8bpumlv40QGWySAQ/CL2S/T6XjVB/9B8c3Q /oYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=qJjckmtN; 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=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d10-20020a170906174a00b006e866549c5esi6942216eje.702.2022.04.12.01.16.52; Tue, 12 Apr 2022 01:16:52 -0700 (PDT) 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=@foxmail.com header.s=s201512 header.b=qJjckmtN; 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=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6571968B38C; Tue, 12 Apr 2022 11:15:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-60.mail.qq.com (out203-205-251-60.mail.qq.com [203.205.251.60]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2135A68B388 for ; Tue, 12 Apr 2022 11:15:47 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1649751342; bh=Z5hsxg+uMpOmEMYTMHzexyKVJ2od3+PTj4IX0O2ktOA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=qJjckmtNHO9EtucaHNjyCe5CrR4jLby7LvlpQrum7pl1rVzrEUpxi3fa+flwE9AQz 9k5q4V3rai5sqcqJAo8cXztQvvc/l9/6s4P/JEBXViZeGyr9oniYO0DIn4hg8kq0Dk Lp+R9rrRRIZJUwu2Q+jY1ZY6dcfbPdeR1lsYnJh8= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.68]) by newxmesmtplogicsvrsza8.qq.com (NewEsmtp) with SMTP id 3E314CF9; Tue, 12 Apr 2022 16:15:35 +0800 X-QQ-mid: xmsmtpt1649751341th2vkz059 Message-ID: X-QQ-XMAILINFO: OEgU9iHXvJ5FDbDoX1uiaACfpt32Dp75Cd1G7v3cD+Wln8gyI3bwH2eFDyS0CG Az2sfX8cxX7Zg00IGsS2vOX7hZaHiWd7NA47Z23qYdzk7wH/gHyVGkByJivz5DnFJ31QgtKRwec1 50JuaOpz8ObxSshIjwruYz4iGFTv13fXwkTlbSYOanmB7a7N3OrxO5gd0a3cHnV6URYxGyL86oMV grBMy5Y9nWJo0cc9K8cLMRFt8K9JmVtC831ctBYN7ijyc++qGkzZG3v4itFdB8kdpfAgVg2Jcr07 rtEBvfHaFkdH3BrosgPOJaPt2VGaRQgLfPZ6VJalvLvLGTiZ1k1NsWEE7PODZpkRsPRNzJrMO41T A956EAeXv1pDfHFS4WuizYJYz3xkJbhC5o96daqQrYIDtKZw31MS1JkiwK/2s0lAT3aR7xdPUMy+ CdXtv3Xd5gHgkYOVaUA1ZfX+mFvVALRxhVYkoAzzfDcJ/SN2Pp3LBGE06VFj1lfQQhzBaKyiYHIK VKdsY8eGKGCYhv8uo9YOqvSapFS/4vngnxcNmDiph2SL8LxJdIaa0tPUkiBI8TvNmULLNDvtngtJ rx9iogjU4tIKgzJiNrcZSVPa/VEAaHkBx0+ZsTIF2EtXuZ1yQrBHfPU4VmLcc/RC3a3kSjwEQ4xb fOoi8o1fI1/P0NmYWkb4g3ng+hVHgh2DUh5rlJKQiS53osIgrFWhbjV0+uO7nZjQxzYhIHpQTbMJ FqIG+Iy5Q549cxlJocnnoq3wlHxopG4xfGqZ/bUiClHpXv8hBgxJsC+9ZiMKqF748iAHiBNhXFxw YnW24jg4BbP3g7jSei8FUTcFiCmnXICeFzF6AVA7P+cKJUMsgwK3TDslnwLmGO1J2/j/bl4AlAtq c+fS4rzpf+JQWRtnRGiSWPk4n3JNuC5DQ+whqRPbjc0xCXeFeJKNDZY8jsgWqqbPqAdH7GJz2jSv +CfNyUzoLVDI6kD8GqwA== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Apr 2022 16:15:17 +0800 X-OQ-MSGID: <20220412081522.43246-5-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220412081522.43246-1-quinkblack@foxmail.com> References: <20220412081522.43246-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/10] avformat/hls: fix leak of variant when dynarray_add fail X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: YVXXYzQrT8SK --- libavformat/hls.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index d5c3009d07..b5cdf158c6 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -366,8 +366,16 @@ static struct variant *new_variant(HLSContext *c, struct variant_info *info, strcpy(var->subtitles_group, info->subtitles); } - dynarray_add(&c->variants, &c->n_variants, var); - dynarray_add(&var->playlists, &var->n_playlists, pls); + if (av_dynarray_add_nofree(&var->playlists, &var->n_playlists, pls) < 0) { + /* Don't free pls since it's not owned by variant */ + av_free(var); + return NULL; + } + if (av_dynarray_add_nofree(&c->variants, &c->n_variants, var) < 0) { + av_free(var->playlists); + av_free(var); + return NULL; + } return var; }