[FFmpeg-devel] [PATCH v1 2/4] avformat/hlsenc: remove the unnecessary null pointer check
Liu Steven
lq at chinaffmpeg.org
Mon Sep 16 06:20:58 EEST 2019
> 在 2019年9月16日,上午9:03,lance.lmwang at gmail.com 写道:
>
> From: Limin Wang <lance.lmwang at gmail.com>
>
> Signed-off-by: Limin Wang <lance.lmwang at 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 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”.
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$
More information about the ffmpeg-devel
mailing list