From patchwork Thu Apr 19 12:28:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: guikunzhi X-Patchwork-Id: 8502 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp635929jad; Thu, 19 Apr 2018 05:44:20 -0700 (PDT) X-Google-Smtp-Source: AIpwx49S2NpzrIe9h8MaLefpmbgeX2jRMDq3fFH4kTdoVQWF+ffWrBRtgQmk3yua7LqujTlfvWwm X-Received: by 10.28.108.20 with SMTP id h20mr4645674wmc.69.1524141860534; Thu, 19 Apr 2018 05:44:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524141860; cv=none; d=google.com; s=arc-20160816; b=Hmtjm1WPPKdk3WClC+KUkrki4fmGqox5LM3Ca4pkLfr7NBBg5RYqvnUY/Pt9mlO5Ql Imio+hBGeFstoEc29VkYA3X4mkhRdolbYSRC/Io28xnhFU0dMawXw5dICn96Kz2rxR09 9c+Wb+KOXe/do8MINYo56de9F6/nP8TdWUK3qKAuiKRsJ/gTBgrunJ8R8ZYR+ZqGxgw8 K2TrWWkOiFBepfvTH1lFVrmIoaVzCcft44GRtkU3w5VRTBWVFb8Dgs8VEjR3GBYsfwdx i4KBRKBdTwAIdUOEkbCEw5y5UOzZs3qpFfwscV0JYNy5ZRZK/XnpsIN6DTp5roVTMGaU eXfA== 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=uHoIwWKxU8AqhL8ocX0fXXD7jr34EFRhQY5H11Hf248=; b=RJjb9qKYT6vpifHqVTb11lb9JJS32s3j6ydGLPAQN2udbNg/8+EnsjyaWfZUXK9l+I kEc5ih9+Hu4Fz81+ceet6nnjvss480Zp1LS3xraewdtnbNIsjqvRoES6qoQtkxPkiVuN V58VCh4ZkQD9R11lQnw1leBC1TsGVOem4gI3QazSgUxPTnOGiA/H1WmPt/cPGZEpiB+3 yNBIqBwZ4QCRmLvCuBkwuKIryfn7NjrGhxBWjdodagKm/xsEGeh976UdyXUiRsTlPnPQ CmqiMmqpVJFxR3uU7XQ+5GRqHRFWewulcjctjs0TnjNF3xgFYnBHbDWA0TEkL78s/Otw Hzgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@163.com header.s=s110527 header.b=HIiJ4LKz; 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 b2si2717541wmh.171.2018.04.19.05.44.19; Thu, 19 Apr 2018 05:44:20 -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=@163.com header.s=s110527 header.b=HIiJ4LKz; 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 DB72968988D; Thu, 19 Apr 2018 15:43:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from m50-133.163.com (m50-133.163.com [123.125.50.133]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4C96D688310 for ; Thu, 19 Apr 2018 15:43:41 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=mMWUNfbcygwHADLy1i UZVzIgczs06PNejtYDnFrkvlQ=; b=HIiJ4LKzC4ttK82l5KBO1cGWm/MGGu1xgK 5ifIi5x/XNVYgOTBXPS15D66LkqqFYO28QtFIlAE3KxPdbDEMVNJR11WB+nA7KCq qVywiNw2AxgqCVv0Ngj3Wno62w97x2YchX6fk025MCr0WHTrJgJ8ffTS3CdVgVSb 3HfBIG/t0= Received: from guikunzhideMacBook-Pro.local.net (unknown [120.52.147.18]) by smtp3 (Coremail) with SMTP id DdGowADHaWiCi9ha66RsAQ--.105S2; Thu, 19 Apr 2018 20:28:51 +0800 (CST) From: guikunzhi To: ffmpeg-devel@ffmpeg.org Date: Thu, 19 Apr 2018 20:28:23 +0800 Message-Id: <20180419122823.84787-1-guikunzhi@163.com> X-Mailer: git-send-email 2.14.3 (Apple Git-98) X-CM-TRANSID: DdGowADHaWiCi9ha66RsAQ--.105S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7Zw4kuFWktry7ZFWkKFykXwb_yoW8ZFyUpr yak34ayryrG3WSkwsYy34rXFy7J34rKr4v9w4S93yxA3s8X34Yvw4v9a109rnxurZ7ur1v ga1Yqa15Cr4DtaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UW7KsUUUUU= X-Originating-IP: [120.52.147.18] X-CM-SenderInfo: 5jxly3pq2kxqqrwthudrp/1tbiXAMtZVXlltvXiQAAs0 Subject: [FFmpeg-devel] [PATCH] fix memory leak of parsing dash MPD 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: guikunzhi MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: guikunzhi --- libavformat/dashdec.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c index 6304ad933b..b9f1a40dfe 100644 --- a/libavformat/dashdec.c +++ b/libavformat/dashdec.c @@ -706,6 +706,7 @@ static int resolve_content_path(AVFormatContext *s, const char *url, int *max_ur char *baseurl = NULL; char *root_url = NULL; char *text = NULL; + char *tmp = NULL; int isRootHttp = 0; char token ='/'; @@ -735,9 +736,11 @@ static int resolve_content_path(AVFormatContext *s, const char *url, int *max_ur goto end; } av_strlcpy(text, url, strlen(url)+1); - while (mpdName = av_strtok(text, "/", &text)) { + tmp = text; + while (mpdName = av_strtok(tmp, "/", &tmp)) { size = strlen(mpdName); } + av_free(text); path = av_mallocz(tmp_max_url_size); tmp_str = av_mallocz(tmp_max_url_size); @@ -796,6 +799,7 @@ end: } av_free(path); av_free(tmp_str); + xmlFree(baseurl); return updated; } @@ -1121,6 +1125,7 @@ static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in) xmlNodePtr root_element = NULL; xmlNodePtr node = NULL; xmlNodePtr period_node = NULL; + xmlNodePtr tmp_node = NULL; xmlNodePtr mpd_baseurl_node = NULL; xmlNodePtr period_baseurl_node = NULL; xmlNodePtr period_segmenttemplate_node = NULL; @@ -1215,8 +1220,10 @@ static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in) xmlFree(val); } - mpd_baseurl_node = find_child_node_by_name(node, "BaseURL"); - if (!mpd_baseurl_node) { + tmp_node = find_child_node_by_name(node, "BaseURL"); + if (tmp_node) { + mpd_baseurl_node = xmlCopyNode(tmp_node,1); + } else { mpd_baseurl_node = xmlNewNode(NULL, "BaseURL"); } @@ -1270,6 +1277,7 @@ cleanup: /*free the document */ xmlFreeDoc(doc); xmlCleanupParser(); + xmlFreeNode(mpd_baseurl_node); } av_free(new_url);