Message ID | 20240212145319.7187-1-ingo@datarhei.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] avformat/libsrt: Fix srt:// URL parsing | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | fail | Make fate failed |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | fail | Make fate failed |
On Mon, 12 Feb 2024, Ingo Oppermann wrote: > Add missing NULL check and use ff_urldecode for string query > parameters. Will apply, thanks. Marton > > Signed-off-by: Ingo Oppermann <ingo@datarhei.com> > --- > libavformat/libsrt.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c > index cd8f5b1e7d..d549aea1f7 100644 > --- a/libavformat/libsrt.c > +++ b/libavformat/libsrt.c > @@ -32,6 +32,7 @@ > #include "network.h" > #include "os_support.h" > #include "url.h" > +#include "urldecode.h" > > /* This is for MPEG-TS and it's a default SRTO_PAYLOADSIZE for SRTT_LIVE (8 TS packets) */ > #ifndef SRT_LIVE_DEFAULT_PAYLOAD_SIZE > @@ -547,7 +548,11 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) > } > if (av_find_info_tag(buf, sizeof(buf), "passphrase", p)) { > av_freep(&s->passphrase); > - s->passphrase = av_strndup(buf, strlen(buf)); > + s->passphrase = ff_urldecode(buf, 1); > + if (!s->passphrase) { > + ret = AVERROR(ENOMEM); > + goto err; > + } > } > #if SRT_VERSION_VALUE >= 0x010302 > if (av_find_info_tag(buf, sizeof(buf), "enforced_encryption", p)) { > @@ -632,7 +637,7 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) > } > if (av_find_info_tag(buf, sizeof(buf), "streamid", p)) { > av_freep(&s->streamid); > - s->streamid = av_strdup(buf); > + s->streamid = ff_urldecode(buf, 1); > if (!s->streamid) { > ret = AVERROR(ENOMEM); > goto err; > @@ -640,7 +645,7 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) > } > if (av_find_info_tag(buf, sizeof(buf), "smoother", p)) { > av_freep(&s->smoother); > - s->smoother = av_strdup(buf); > + s->smoother = ff_urldecode(buf, 1); > if(!s->smoother) { > ret = AVERROR(ENOMEM); > goto err; > @@ -671,6 +676,7 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) > err: > av_freep(&s->smoother); > av_freep(&s->streamid); > + av_freep(&s->passphrase); > srt_cleanup(); > return ret; > } > -- > 2.39.3 (Apple Git-145) > > _______________________________________________ > 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". >
diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c index cd8f5b1e7d..d549aea1f7 100644 --- a/libavformat/libsrt.c +++ b/libavformat/libsrt.c @@ -32,6 +32,7 @@ #include "network.h" #include "os_support.h" #include "url.h" +#include "urldecode.h" /* This is for MPEG-TS and it's a default SRTO_PAYLOADSIZE for SRTT_LIVE (8 TS packets) */ #ifndef SRT_LIVE_DEFAULT_PAYLOAD_SIZE @@ -547,7 +548,11 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) } if (av_find_info_tag(buf, sizeof(buf), "passphrase", p)) { av_freep(&s->passphrase); - s->passphrase = av_strndup(buf, strlen(buf)); + s->passphrase = ff_urldecode(buf, 1); + if (!s->passphrase) { + ret = AVERROR(ENOMEM); + goto err; + } } #if SRT_VERSION_VALUE >= 0x010302 if (av_find_info_tag(buf, sizeof(buf), "enforced_encryption", p)) { @@ -632,7 +637,7 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) } if (av_find_info_tag(buf, sizeof(buf), "streamid", p)) { av_freep(&s->streamid); - s->streamid = av_strdup(buf); + s->streamid = ff_urldecode(buf, 1); if (!s->streamid) { ret = AVERROR(ENOMEM); goto err; @@ -640,7 +645,7 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) } if (av_find_info_tag(buf, sizeof(buf), "smoother", p)) { av_freep(&s->smoother); - s->smoother = av_strdup(buf); + s->smoother = ff_urldecode(buf, 1); if(!s->smoother) { ret = AVERROR(ENOMEM); goto err; @@ -671,6 +676,7 @@ static int libsrt_open(URLContext *h, const char *uri, int flags) err: av_freep(&s->smoother); av_freep(&s->streamid); + av_freep(&s->passphrase); srt_cleanup(); return ret; }
Add missing NULL check and use ff_urldecode for string query parameters. Signed-off-by: Ingo Oppermann <ingo@datarhei.com> --- libavformat/libsrt.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)