[FFmpeg-devel] [PATCH v3 1/3] avformat/hlsenc: fix the av_dirname path isn't include separator in the end of string
Steven Liu
lq at chinaffmpeg.org
Thu Oct 31 08:17:32 EET 2019
> 在 2019年10月31日,14:01,Limin Wang <lance.lmwang at gmail.com> 写道:
>
>
>
> ping, please help to push the patch, it'll fix ticket #8348 although I have sumit the fix long
> time ago after Miachel report it.
Waiting that reporter test it, i will push it if test passed.
>
>
> On Wed, Oct 23, 2019 at 11:55:15PM +0800, lance.lmwang at gmail.com wrote:
>> From: Limin Wang <lance.lmwang at gmail.com>
>>
>> Reviewed-by: Liu Steven <lq at chinaffmpeg.org>
>> Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
>> ---
>> libavformat/hlsenc.c | 16 ++++++++++------
>> 1 file changed, 10 insertions(+), 6 deletions(-)
>>
>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>> index 7b1d54e..af4b532 100644
>> --- a/libavformat/hlsenc.c
>> +++ b/libavformat/hlsenc.c
>> @@ -478,6 +478,12 @@ static void reflush_dynbuf(VariantStream *vs, int *range_length)
>> avio_write(vs->out, vs->temp_buffer, *range_length);;
>> }
>>
>> +#if HAVE_DOS_PATHS
>> +#define SEPARATOR '\\'
>> +#else
>> +#define SEPARATOR '/'
>> +#endif
>> +
>> static int hls_delete_old_segments(AVFormatContext *s, HLSContext *hls,
>> VariantStream *vs)
>> {
>> @@ -544,7 +550,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)+1) + strlen(segment->filename) + 1;
>> path = av_malloc(path_size);
>> if (!path) {
>> ret = AVERROR(ENOMEM);
>> @@ -554,8 +560,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%c%s", dirname, SEPARATOR, segment->filename);
>> }
>>
>> proto = avio_find_protocol_name(s->url);
>> @@ -575,15 +580,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) + 1 + strlen(vtt_dirname) + 1;
>> 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%c%s", vtt_dirname, SEPARATOR, segment->sub_filename);
>>
>> av_freep(&vtt_dirname);
>>
>> --
>> 2.6.4
>>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
Thanks
Steven
More information about the ffmpeg-devel
mailing list