Message ID | 20200307023651.57296-1-lq@chinaffmpeg.org |
---|---|
State | Superseded |
Headers | show |
Series | [FFmpeg-devel] avformat/hlsenc: set the options when open the key info files | expand |
Context | Check | Description |
---|---|---|
andriy/ffmpeg-patchwork | success | Make fate finished |
> 2020年3月7日 上午11:06,Andreas Rheinhardt <andreas.rheinhardt@gmail.com> 写道: > > Steven Liu: >> make the options same as segments for the http put method >> >> Signed-off-by: Steven Liu <liuqi05@kuaishou.com> >> --- >> libavformat/hlsenc.c | 11 ++++++++--- >> 1 file changed, 8 insertions(+), 3 deletions(-) >> >> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c >> index f6dd894343..88062ac536 100644 >> --- a/libavformat/hlsenc.c >> +++ b/libavformat/hlsenc.c >> @@ -685,6 +685,7 @@ static int do_encrypt(AVFormatContext *s, VariantStream *vs) >> } >> >> if (!*hls->key_string) { >> + AVDictionary *options = NULL; >> if (!hls->key) { >> if ((ret = randomize(key, sizeof(key))) < 0) { >> av_log(s, AV_LOG_ERROR, "Cannot generate a strong random key\n"); >> @@ -695,8 +696,10 @@ static int do_encrypt(AVFormatContext *s, VariantStream *vs) >> } >> >> ff_data_to_hex(hls->key_string, key, sizeof(key), 0); >> - if ((ret = s->io_open(s, &pb, hls->key_file, AVIO_FLAG_WRITE, NULL)) < 0) >> + set_http_options(s, &options, hls); >> + if ((ret = s->io_open(s, &pb, hls->key_file, AVIO_FLAG_WRITE, &options)) < 0) > > Here and below the options might leak on error. The easiest way to fix > this is to free the options before checking whether opening IO failed > or not. Ah, yes > >> return ret; >> + av_dict_free(&options); >> avio_seek(pb, 0, SEEK_CUR); >> avio_write(pb, key, KEYSIZE); >> avio_close(pb); >> @@ -711,13 +714,15 @@ static int hls_encryption_start(AVFormatContext *s) >> int ret; >> AVIOContext *pb; >> uint8_t key[KEYSIZE]; >> + AVDictionary *options = NULL; > > There seems to be a whitespace issue. Update in V2 >> >> - if ((ret = s->io_open(s, &pb, hls->key_info_file, AVIO_FLAG_READ, NULL)) < 0) { >> + set_http_options(s, &options, hls); >> + if ((ret = s->io_open(s, &pb, hls->key_info_file, AVIO_FLAG_READ, &options)) < 0) { >> av_log(hls, AV_LOG_ERROR, >> "error opening key info file %s\n", hls->key_info_file); >> return ret; >> } >> - >> + av_dict_free(&options); >> ff_get_line(pb, hls->key_uri, sizeof(hls->key_uri)); >> hls->key_uri[strcspn(hls->key_uri, "\r\n")] = '\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-request@ffmpeg.org with subject "unsubscribe". Thanks Steven
diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index f6dd894343..88062ac536 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -685,6 +685,7 @@ static int do_encrypt(AVFormatContext *s, VariantStream *vs) } if (!*hls->key_string) { + AVDictionary *options = NULL; if (!hls->key) { if ((ret = randomize(key, sizeof(key))) < 0) { av_log(s, AV_LOG_ERROR, "Cannot generate a strong random key\n"); @@ -695,8 +696,10 @@ static int do_encrypt(AVFormatContext *s, VariantStream *vs) } ff_data_to_hex(hls->key_string, key, sizeof(key), 0); - if ((ret = s->io_open(s, &pb, hls->key_file, AVIO_FLAG_WRITE, NULL)) < 0) + set_http_options(s, &options, hls); + if ((ret = s->io_open(s, &pb, hls->key_file, AVIO_FLAG_WRITE, &options)) < 0) return ret; + av_dict_free(&options); avio_seek(pb, 0, SEEK_CUR); avio_write(pb, key, KEYSIZE); avio_close(pb); @@ -711,13 +714,15 @@ static int hls_encryption_start(AVFormatContext *s) int ret; AVIOContext *pb; uint8_t key[KEYSIZE]; + AVDictionary *options = NULL; - if ((ret = s->io_open(s, &pb, hls->key_info_file, AVIO_FLAG_READ, NULL)) < 0) { + set_http_options(s, &options, hls); + if ((ret = s->io_open(s, &pb, hls->key_info_file, AVIO_FLAG_READ, &options)) < 0) { av_log(hls, AV_LOG_ERROR, "error opening key info file %s\n", hls->key_info_file); return ret; } - + av_dict_free(&options); ff_get_line(pb, hls->key_uri, sizeof(hls->key_uri)); hls->key_uri[strcspn(hls->key_uri, "\r\n")] = '\0';
make the options same as segments for the http put method Signed-off-by: Steven Liu <liuqi05@kuaishou.com> --- libavformat/hlsenc.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)