From patchwork Fri Sep 15 23:16:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 5165 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp1169067jaa; Fri, 15 Sep 2017 16:42:59 -0700 (PDT) X-Received: by 10.28.4.135 with SMTP id 129mr4005974wme.34.1505518979640; Fri, 15 Sep 2017 16:42:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1505518979; cv=none; d=google.com; s=arc-20160816; b=p2I7ROKSdnW8/j3xQDZvUva2kmKtsvHD6oVw1jSnzlRRzTGAeTRspNUBfIfH0ap7VE fSJZo2l5l/FJ17CXw7WRmwCFEitRzHV4HOOkmM46G2xvDqTO/T6UZBbEsXRnJUO2xdNr J8HeY1xHl5mAtSt8E/HXDH66WWgV0uzXiGsIF5USlJOZX2f1auj5v/tTWDGTkEzBKYZp cPo2aRjuLwrzuulH8bhkMNe2FsZgWVTRLVBdT++NM6Iq0SIAk42y+0UpYM+i5G9sJUMo Gy+domfdStkvfEMS12mqdWlgEcdvU39w5OM354uIXHOahW27Ed+QbcuUfb+XVovaWH2o YTIw== 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=3J7uuyxplI4dXxqGs+/Jr7+nsSdMLyg+yrDpEg3SBRo=; b=RnNN6Jppmx1VFdrZ0csLqyH7EiVSHCX1iSjvffloT/89a3z0nnSDgvmjmM0cu4ze9q 9/qRadsXlpesmCUU3etfDx1Gsr3qXt2N5D7FGgWbN+qb06wsXFqVCORYnxPcbVdZIcRu tkF/qzODO6sFAGYqRHdYPc4BVNTacpfENJ3/GuUkiZIO4VDH+2FpUV5eYrj7nnt6hGbc rKFxbYQJre47vxSyINx9nCfBn2336SSLHeq6b6ro3LUVdNJK1oKZXG4PBOJU9BwRoDPC 84eP1JTh3PyQMywV0dWsyTew5U+8HLRq7CwlAAeZYqZXKQXGDc23q7G6o0LPzmy1vm0u m9Lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=AwbtvtH/; 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 c184si1779438wme.150.2017.09.15.16.42.58; Fri, 15 Sep 2017 16:42:59 -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=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=AwbtvtH/; 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 66156689E6F; Sat, 16 Sep 2017 02:42:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f68.google.com (mail-pg0-f68.google.com [74.125.83.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 877BB689E6B for ; Sat, 16 Sep 2017 02:42:43 +0300 (EEST) Received: by mail-pg0-f68.google.com with SMTP id m30so2023576pgn.5 for ; Fri, 15 Sep 2017 16:42:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id; bh=TQUa6MjaYcVRMRPuTzUfcDcy5sMV9Sy3e519eBCD7p4=; b=AwbtvtH/yaUMWPo31SzrABtz2D7PRUVSvAF8QsJm3NeqCuaFp97Q6FeYW3ABXFZYF6 lFP1r3wUvCle7+PDKl4+AUOMtBNhwQDSIhfLVS3VoctghK0F3Wdt8IShxfe5LR6L+7Zw xEA1pw4/oQaEGS8JT3Gz9XobWv0CBV/tKGcr4d/ku4UK2gJgPGrY17X3iZFjkT6EI5PK IwfDe+EdwLYWZ/29Lt06Gl0mKS2gZIUKjzWrb80ueIB19YilvG8xNax4Fnnz/KjK7Tly WiOBaX5pYwspKnoi1ftToY1HwCL1Rb71gp0OUTFTNeUrHGVXCPOXdORYj9DYVzkKYEQi goAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=TQUa6MjaYcVRMRPuTzUfcDcy5sMV9Sy3e519eBCD7p4=; b=oGBgdLFfIGRex/fjTcFDbTS/dhvtHfL91wkjGcyebJgzDJzQ/lh108c8NOQMeT+r8y lXfq+INHXMtY1ON78lV+cKN27rp1WCr9Njv+fbwIThL6/uHexN83L3m60x9T1pwFwth4 JQu3/m6Wmb+C1pK7x1LYphpfQavcQuXzI8/nsBtzST9kdgihpsV3DZWUV0Ct9Z97FGmw tqfJrqIba6oBYWYziVMjal94DfUAgi4dGjHANrZm7IKe4dixTL2BRMBD0QZF/xPdaUk+ QMbJD+Da5+/cohmPQboZFc8T6SRA8rVwvt1ORRpua1m8qgixi93x9nKLYiQomllnIOxS lg+A== X-Gm-Message-State: AHPjjUhYBvlKY1kmu8WPcTMmvZULxKLiTCmzvGBSQIZATZdnP4KDQZUQ EkrbSI6CJAGWJ9cdkCw= X-Google-Smtp-Source: AOwi7QAGQm0GyRgxLLbSwq/2MFB98qNCMlzR3dPoWgDmZvID3cf0KbD7m42FzG/IABGBV/3L6K1ajg== X-Received: by 10.98.205.197 with SMTP id o188mr1157407pfg.29.1505517390959; Fri, 15 Sep 2017 16:16:30 -0700 (PDT) Received: from tmm1-macbook.local.net (c-73-252-174-83.hsd1.ca.comcast.net. [73.252.174.83]) by smtp.gmail.com with ESMTPSA id a19sm3687943pfj.88.2017.09.15.16.16.29 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 15 Sep 2017 16:16:30 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Fri, 15 Sep 2017 16:16:21 -0700 Message-Id: <20170915231621.43290-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.13.5 (Apple Git-94) Subject: [FFmpeg-devel] [PATCH] avformat/hlsenc: fix segfault when using -hls_segment_type fmp4 with -hls_segment_filename 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: lq@chinaffmpeg.org, Aman Gupta MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta previously, specifying -hls_segment_filename meant s->base_output_dirname was never set, causing a segfault: (lldb) bt * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) * frame #0: 0x00007fffbf7d82d0 libsystem_platform.dylib`_platform_strcmp + 80 frame #1: 0x00000001005f4dcf libavformat.57.dylib`io_open_default(s=0x000000010481cc00, pb=0x0000000104806020, url=0x0000000000000000, flags=2, options=0x0000000000000000) at options.c:107 frame #2: 0x0000000100528968 libavformat.57.dylib`hls_mux_init(s=0x000000010481cc00) at hlsenc.c:595 frame #3: 0x00000001005273cb libavformat.57.dylib`hls_write_header(s=0x000000010481cc00) at hlsenc.c:1518 frame #4: 0x00000001005c08d0 libavformat.57.dylib`write_header_internal(s=0x000000010481cc00) at mux.c:486 frame #5: 0x00000001005c0774 libavformat.57.dylib`avformat_write_header(s=0x000000010481cc00, options=0x00000001029026e8) at mux.c:539 --- libavformat/hlsenc.c | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 895aa41bc3..3a9a235514 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -1441,32 +1441,33 @@ static int hls_write_header(AVFormatContext *s) } else { av_strlcat(hls->basename, pattern, basename_size); } + } - if (av_strcasecmp(hls->fmp4_init_filename, "init.mp4")) { - int fmp4_init_filename_len = strlen(hls->fmp4_init_filename) + 1; - hls->base_output_dirname = av_malloc(fmp4_init_filename_len); - if (!hls->base_output_dirname) { - ret = AVERROR(ENOMEM); - goto fail; - } - av_strlcpy(hls->base_output_dirname, hls->fmp4_init_filename, fmp4_init_filename_len); - } else { - hls->base_output_dirname = av_malloc(basename_size); - if (!hls->base_output_dirname) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (av_strcasecmp(hls->fmp4_init_filename, "init.mp4")) { + int fmp4_init_filename_len = strlen(hls->fmp4_init_filename) + 1; + hls->base_output_dirname = av_malloc(fmp4_init_filename_len); + if (!hls->base_output_dirname) { + ret = AVERROR(ENOMEM); + goto fail; + } + av_strlcpy(hls->base_output_dirname, hls->fmp4_init_filename, fmp4_init_filename_len); + } else { + hls->base_output_dirname = av_malloc(basename_size); + if (!hls->base_output_dirname) { + ret = AVERROR(ENOMEM); + goto fail; + } - av_strlcpy(hls->base_output_dirname, s->filename, basename_size); - p = strrchr(hls->base_output_dirname, '/'); - if (p) { - *(p + 1) = '\0'; - av_strlcat(hls->base_output_dirname, hls->fmp4_init_filename, basename_size); - } else { - av_strlcpy(hls->base_output_dirname, hls->fmp4_init_filename, basename_size); - } + av_strlcpy(hls->base_output_dirname, s->filename, basename_size); + p = strrchr(hls->base_output_dirname, '/'); + if (p) { + *(p + 1) = '\0'; + av_strlcat(hls->base_output_dirname, hls->fmp4_init_filename, basename_size); + } else { + av_strlcpy(hls->base_output_dirname, hls->fmp4_init_filename, basename_size); } } + if (!hls->use_localtime) { ret = sls_flag_check_duration_size_index(hls); if (ret < 0) {