> 在 2019年9月16日,上午9:03,lance.lmw...@gmail.com 写道:
> 
> From: Limin Wang <lance.lmw...@gmail.com>
> 
> Signed-off-by: Limin Wang <lance.lmw...@gmail.com>
> ---
> libavformat/hlsenc.c | 31 ++-----------------------------
> 1 file changed, 2 insertions(+), 29 deletions(-)
> 
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index 1f2bdfbe4d..b5681a85c7 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -1613,16 +1613,13 @@ static int hls_start(AVFormatContext *s, 
> VariantStream *vs)
>             if (c->use_localtime_mkdir) {
>                 const char *dir;
>                 char *fn_copy = av_strdup(oc->url);
> -                if (!fn_copy) {
> -                    return AVERROR(ENOMEM);
> -                }
>                 dir = av_dirname(fn_copy);
>                 if (ff_mkdir_p(dir) == -1 && errno != EEXIST) {
>                     av_log(oc, AV_LOG_ERROR, "Could not create directory %s 
> with use_localtime_mkdir\n", dir);
> -                    av_free(fn_copy);
> +                    av_freep(&fn_copy);
>                     return AVERROR(errno);
>                 }
> -                av_free(fn_copy);
> +                av_freep(&fn_copy);
>             }
>         } else {
>             char *filename = NULL;
> @@ -1784,11 +1781,6 @@ static int validate_name(int nb_vs, const char *fn)
>     }
> 
>     fn_dup = av_strdup(fn);
> -    if (!fn_dup) {
> -        ret = AVERROR(ENOMEM);
> -        goto fail;
> -    }
> -
>     filename = av_basename(fn);
>     subdir_name = av_dirname(fn_dup);
> 
> @@ -1818,11 +1810,6 @@ static int format_name(const char *buf, char **s, int 
> index, const char *varname
>     int ret = 0;
> 
>     orig_buf_dup = av_strdup(buf);
> -    if (!orig_buf_dup) {
> -        ret = AVERROR(ENOMEM);
> -        goto fail;
> -    }
> -

will segment fault when remove these five lines;
>     if (!av_stristr(buf, "%v")) {
>         *s = orig_buf_dup;
>         return ret;
> @@ -1846,11 +1833,6 @@ static int format_name(const char *buf, char **s, int 
> index, const char *varname
>     /* if %v is present in the file's directory, create sub-directory */
>     if (av_stristr(dir, "%v") && proto && !strcmp(proto, "file")) {
>         mod_buf_dup = av_strdup(*s);
> -        if (!mod_buf_dup) {
> -            ret = AVERROR(ENOMEM);
> -            goto fail;
> -        }
> -
>         dir = av_dirname(mod_buf_dup);
>         if (ff_mkdir_p(dir) == -1 && errno != EEXIST) {
>             ret = AVERROR(errno);
> @@ -2151,11 +2133,6 @@ static int update_master_pl_info(AVFormatContext *s)
>     int ret = 0;
> 
>     fn1 = av_strdup(s->url);
> -    if (!fn1) {
> -        ret = AVERROR(ENOMEM);
> -        goto fail;
> -    }
> -
>     dir = av_dirname(fn1);
> 
>     /**
> @@ -2164,10 +2141,6 @@ static int update_master_pl_info(AVFormatContext *s)
>      */
>     if (dir && av_stristr(av_basename(dir), "%v")) {
>         fn2 = av_strdup(dir);
> -        if (!fn2) {
> -            ret = AVERROR(ENOMEM);
> -            goto fail;
> -        }
>         dir = av_dirname(fn2);
>     }
> 
> -- 
> 2.21.0
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe”.

BTW,

command line:
./ffmpeg -re -f lavfi -i testsrc2 -g 25 -r:v 25 -f hls -hls_time 2  -strftime 1 
-strftime_mkdir 1 -hls_segment_filename "http://127.0.0.1/output_liuqi_%s.ts"; 
http://127.0.0.1/output_liuqi.m3u8
it incorrent result when strdup failed.

before patch it should get no memory error message.

after it will not get error message, but it create file at the root dir on 
server.

StevenLiu:dash StevenLiu$ sudo cat /usr/local/nginx/html/output_liuqi.m3u8 
;sudo ls /usr/local/nginx/html/output_liuqi*.ts
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:111
#EXTINF:2.000000,
http://127.0.0.1/output_liuqi_1568603743.ts
#EXTINF:2.000000,
http://127.0.0.1/output_liuqi_1568603745.ts
#EXTINF:1.640000,
http://127.0.0.1/output_liuqi_1568603747.ts
#EXTINF:2.000000,
http://127.0.0.1/output_liuqi_1568603748.ts
#EXTINF:2.000000,
http://127.0.0.1/output_liuqi_1568603750.ts

/usr/local/nginx/html/output_liuqi_1568603519.ts        
/usr/local/nginx/html/output_liuqi_1568603579.ts        
/usr/local/nginx/html/output_liuqi_1568603636.ts        
/usr/local/nginx/html/output_liuqi_1568603695.ts
/usr/local/nginx/html/output_liuqi_1568603522.ts        
/usr/local/nginx/html/output_liuqi_1568603580.ts        
/usr/local/nginx/html/output_liuqi_1568603639.ts        
/usr/local/nginx/html/output_liuqi_1568603697.ts
/usr/local/nginx/html/output_liuqi_1568603524.ts        
/usr/local/nginx/html/output_liuqi_1568603582.ts        
/usr/local/nginx/html/output_liuqi_1568603641.ts        
/usr/local/nginx/html/output_liuqi_1568603699.ts
/usr/local/nginx/html/output_liuqi_1568603526.ts        
/usr/local/nginx/html/output_liuqi_1568603584.ts        
/usr/local/nginx/html/output_liuqi_1568603642.ts        
/usr/local/nginx/html/output_liuqi_1568603701.ts
/usr/local/nginx/html/output_liuqi_1568603528.ts        
/usr/local/nginx/html/output_liuqi_1568603586.ts        
/usr/local/nginx/html/output_liuqi_1568603644.ts        
/usr/local/nginx/html/output_liuqi_1568603703.ts
/usr/local/nginx/html/output_liuqi_1568603530.ts        
/usr/local/nginx/html/output_liuqi_1568603588.ts        
/usr/local/nginx/html/output_liuqi_1568603646.ts        
/usr/local/nginx/html/output_liuqi_1568603705.ts
/usr/local/nginx/html/output_liuqi_1568603532.ts        
/usr/local/nginx/html/output_liuqi_1568603591.ts        
/usr/local/nginx/html/output_liuqi_1568603649.ts        
/usr/local/nginx/html/output_liuqi_1568603707.ts
/usr/local/nginx/html/output_liuqi_1568603534.ts        
/usr/local/nginx/html/output_liuqi_1568603593.ts        
/usr/local/nginx/html/output_liuqi_1568603651.ts        
/usr/local/nginx/html/output_liuqi_1568603708.ts
/usr/local/nginx/html/output_liuqi_1568603536.ts        
/usr/local/nginx/html/output_liuqi_1568603594.ts        
/usr/local/nginx/html/output_liuqi_1568603653.ts        
/usr/local/nginx/html/output_liuqi_1568603710.ts
/usr/local/nginx/html/output_liuqi_1568603538.ts        
/usr/local/nginx/html/output_liuqi_1568603596.ts        
/usr/local/nginx/html/output_liuqi_1568603655.ts        
/usr/local/nginx/html/output_liuqi_1568603712.ts
/usr/local/nginx/html/output_liuqi_1568603540.ts        
/usr/local/nginx/html/output_liuqi_1568603598.ts        
/usr/local/nginx/html/output_liuqi_1568603657.ts        
/usr/local/nginx/html/output_liuqi_1568603714.ts
/usr/local/nginx/html/output_liuqi_1568603542.ts        
/usr/local/nginx/html/output_liuqi_1568603601.ts        
/usr/local/nginx/html/output_liuqi_1568603659.ts        
/usr/local/nginx/html/output_liuqi_1568603716.ts
/usr/local/nginx/html/output_liuqi_1568603544.ts        
/usr/local/nginx/html/output_liuqi_1568603603.ts        
/usr/local/nginx/html/output_liuqi_1568603661.ts        
/usr/local/nginx/html/output_liuqi_1568603718.ts
/usr/local/nginx/html/output_liuqi_1568603546.ts        
/usr/local/nginx/html/output_liuqi_1568603605.ts        
/usr/local/nginx/html/output_liuqi_1568603663.ts        
/usr/local/nginx/html/output_liuqi_1568603720.ts
/usr/local/nginx/html/output_liuqi_1568603548.ts        
/usr/local/nginx/html/output_liuqi_1568603607.ts        
/usr/local/nginx/html/output_liuqi_1568603665.ts        
/usr/local/nginx/html/output_liuqi_1568603722.ts
/usr/local/nginx/html/output_liuqi_1568603550.ts        
/usr/local/nginx/html/output_liuqi_1568603609.ts        
/usr/local/nginx/html/output_liuqi_1568603667.ts        
/usr/local/nginx/html/output_liuqi_1568603724.ts
/usr/local/nginx/html/output_liuqi_1568603553.ts        
/usr/local/nginx/html/output_liuqi_1568603611.ts        
/usr/local/nginx/html/output_liuqi_1568603668.ts        
/usr/local/nginx/html/output_liuqi_1568603727.ts
/usr/local/nginx/html/output_liuqi_1568603555.ts        
/usr/local/nginx/html/output_liuqi_1568603613.ts        
/usr/local/nginx/html/output_liuqi_1568603670.ts        
/usr/local/nginx/html/output_liuqi_1568603728.ts
/usr/local/nginx/html/output_liuqi_1568603557.ts        
/usr/local/nginx/html/output_liuqi_1568603615.ts        
/usr/local/nginx/html/output_liuqi_1568603672.ts        
/usr/local/nginx/html/output_liuqi_1568603730.ts
/usr/local/nginx/html/output_liuqi_1568603558.ts        
/usr/local/nginx/html/output_liuqi_1568603617.ts        
/usr/local/nginx/html/output_liuqi_1568603674.ts        
/usr/local/nginx/html/output_liuqi_1568603732.ts
/usr/local/nginx/html/output_liuqi_1568603560.ts        
/usr/local/nginx/html/output_liuqi_1568603619.ts        
/usr/local/nginx/html/output_liuqi_1568603676.ts        
/usr/local/nginx/html/output_liuqi_1568603734.ts
/usr/local/nginx/html/output_liuqi_1568603562.ts        
/usr/local/nginx/html/output_liuqi_1568603621.ts        
/usr/local/nginx/html/output_liuqi_1568603679.ts        
/usr/local/nginx/html/output_liuqi_1568603737.ts
/usr/local/nginx/html/output_liuqi_1568603564.ts        
/usr/local/nginx/html/output_liuqi_1568603623.ts        
/usr/local/nginx/html/output_liuqi_1568603681.ts        
/usr/local/nginx/html/output_liuqi_1568603739.ts
/usr/local/nginx/html/output_liuqi_1568603567.ts        
/usr/local/nginx/html/output_liuqi_1568603625.ts        
/usr/local/nginx/html/output_liuqi_1568603683.ts        
/usr/local/nginx/html/output_liuqi_1568603741.ts
/usr/local/nginx/html/output_liuqi_1568603569.ts        
/usr/local/nginx/html/output_liuqi_1568603627.ts        
/usr/local/nginx/html/output_liuqi_1568603684.ts        
/usr/local/nginx/html/output_liuqi_1568603743.ts
/usr/local/nginx/html/output_liuqi_1568603571.ts        
/usr/local/nginx/html/output_liuqi_1568603629.ts        
/usr/local/nginx/html/output_liuqi_1568603686.ts        
/usr/local/nginx/html/output_liuqi_1568603745.ts
/usr/local/nginx/html/output_liuqi_1568603573.ts        
/usr/local/nginx/html/output_liuqi_1568603631.ts        
/usr/local/nginx/html/output_liuqi_1568603688.ts        
/usr/local/nginx/html/output_liuqi_1568603747.ts
/usr/local/nginx/html/output_liuqi_1568603575.ts        
/usr/local/nginx/html/output_liuqi_1568603633.ts        
/usr/local/nginx/html/output_liuqi_1568603691.ts        
/usr/local/nginx/html/output_liuqi_1568603748.ts
/usr/local/nginx/html/output_liuqi_1568603577.ts        
/usr/local/nginx/html/output_liuqi_1568603635.ts        
/usr/local/nginx/html/output_liuqi_1568603693.ts        
/usr/local/nginx/html/output_liuqi_1568603750.ts
StevenLiu:dash StevenLiu$





_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to