From patchwork Tue Oct 8 14:31:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 15576 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 25F724487C6 for ; Tue, 8 Oct 2019 17:31:57 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 07B29687FA3; Tue, 8 Oct 2019 17:31:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1A5EA6805BE for ; Tue, 8 Oct 2019 17:31:50 +0300 (EEST) Received: by mail-pl1-f193.google.com with SMTP id u12so8523442pls.12 for ; Tue, 08 Oct 2019 07:31:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=KXQqvWollE0EXR+UXru/FQ+2/hDx27vO1eCwQO6Vt7c=; b=CMdBw6v+e78G/6mFA8VDaqW3HlIZ4ySo0cAFTxp6OtwC7HX0duTphhJJzQoxAAptP9 EWvTv1xE9jTqO0zOvZTuAzoEX4GbjKRedM6JYg2o9OpDiq/fO9x3OaTI0sAaUZG6kOZG 8zWd22C+zGRqE+jo2YWS91w/VZ8iYjO3Cm7EUe93jYd1w3h69VqlDW6uiW0gEF1MmZAF pfdu84tYKp9LpZ0paqkWL8r2tCiipm8wzZZq3dnCKDjEv/pBjUATvFG62FbCw9qCx5Sy VuN4AsVlsB/1FJz95umvY9+bEMjUGyKiLAvGBCaLbq94MYz8rW0ke8jjDDxWJS5H6LJi ZsTA== 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; bh=KXQqvWollE0EXR+UXru/FQ+2/hDx27vO1eCwQO6Vt7c=; b=QD2seSftu3y3wH9XmTHbEedwREYp3KHZRaCh3aJUaZFid48QVCR8PyBL5rhD7+aod4 MxPLDrhlytjG7YAVi4bFYrbQSQoFM3PNZxmHhngX+psY4mSGEI5lHe8Jl3r1PxDIbgHm YAF9IKqunPkktL98ENfiG/W/B1CPX0TZikByOM3lZ9xUvMejh7cGZ/C2aUI+XYdhP7f8 yclZrBXxBTGUiAKmqKhmcKmA8Oopdf/R/urc1Wu72ldve6L1U9VmRnwI2R2Gk0HARUWA 4XRo/kFKM4X9ClSUteBzZxgG430FIZxaI2qoc439EpW9nFDhqJLVFmitCl189g4in3HC og8w== X-Gm-Message-State: APjAAAXYSbxaZCnUGFxIVO8Q+FmVARQJ0baM2x7g7qDzs++gPdXny7BZ 8Trp8bh05QOL/d5z871TFf0PHVKg X-Google-Smtp-Source: APXvYqwjOO0J2Fvl8H3BthVqQ+3xlKNE+wyPfV8gwpWIf3tNmsC1nfD7BPzzEYNka12HSPZQN/B0UA== X-Received: by 2002:a17:902:6ac2:: with SMTP id i2mr35988206plt.148.1570545108195; Tue, 08 Oct 2019 07:31:48 -0700 (PDT) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id f89sm2207420pje.20.2019.10.08.07.31.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Oct 2019 07:31:47 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 8 Oct 2019 22:31:14 +0800 Message-Id: <20191008143114.29043-1-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 Subject: [FFmpeg-devel] [PATCH v1] avformat/hlsenc: fix the av_dirname path isn't include / in the end of string 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- libavformat/hlsenc.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index cd43201..ad27d7d 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -544,7 +544,7 @@ static int hls_delete_old_segments(AVFormatContext *s, HLSContext *hls, while (segment) { av_log(hls, AV_LOG_DEBUG, "deleting old segment %s\n", segment->filename); - path_size = (hls->use_localtime_mkdir ? 0 : strlen(dirname)) + strlen(segment->filename) + 1; + path_size = (hls->use_localtime_mkdir ? 0 : strlen(dirname)) + strlen(segment->filename) + 2; path = av_malloc(path_size); if (!path) { ret = AVERROR(ENOMEM); @@ -554,8 +554,7 @@ static int hls_delete_old_segments(AVFormatContext *s, HLSContext *hls, if (hls->use_localtime_mkdir) av_strlcpy(path, segment->filename, path_size); else { // segment->filename contains basename only - av_strlcpy(path, dirname, path_size); - av_strlcat(path, segment->filename, path_size); + snprintf(path, path_size, "%s/%s", dirname, segment->filename); } proto = avio_find_protocol_name(s->url); @@ -575,15 +574,14 @@ static int hls_delete_old_segments(AVFormatContext *s, HLSContext *hls, if ((segment->sub_filename[0] != '\0')) { char *vtt_dirname_r = av_strdup(vs->vtt_avf->url); vtt_dirname = (char*)av_dirname(vtt_dirname_r); - sub_path_size = strlen(segment->sub_filename) + 1 + strlen(vtt_dirname); + sub_path_size = strlen(segment->sub_filename) + 2 + strlen(vtt_dirname); sub_path = av_malloc(sub_path_size); if (!sub_path) { ret = AVERROR(ENOMEM); goto fail; } - av_strlcpy(sub_path, vtt_dirname, sub_path_size); - av_strlcat(sub_path, segment->sub_filename, sub_path_size); + snprintf(sub_path, sub_path_size, "%s/%s", vtt_dirname, segment->sub_filename); if (hls->method || (proto && !av_strcasecmp(proto, "http"))) { av_dict_set(&options, "method", "DELETE", 0);