Commit 1f7b5271 authored by Steven Liu's avatar Steven Liu

avformat/libsrt: check av_strdup() return value and fix memleak

Signed-off-by: 's avatarSteven Liu <lq@chinaffmpeg.org>
parent 17d96c15
......@@ -478,6 +478,7 @@ static int libsrt_open(URLContext *h, const char *uri, int flags)
SRTContext *s = h->priv_data;
const char * p;
char buf[256];
int ret = 0;
if (srt_startup() < 0) {
return AVERROR_UNKNOWN;
......@@ -564,10 +565,18 @@ 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);
if (!s->streamid) {
ret = AVERROR(ENOMEM);
goto err;
}
}
if (av_find_info_tag(buf, sizeof(buf), "smoother", p)) {
av_freep(&s->smoother);
s->smoother = av_strdup(buf);
if(!s->smoother) {
ret = AVERROR(ENOMEM);
goto err;
}
}
if (av_find_info_tag(buf, sizeof(buf), "messageapi", p)) {
s->messageapi = strtol(buf, NULL, 10);
......@@ -578,11 +587,16 @@ static int libsrt_open(URLContext *h, const char *uri, int flags)
} else if (!strcmp(buf, "file")) {
s->transtype = SRTT_FILE;
} else {
return AVERROR(EINVAL);
ret = AVERROR(EINVAL);
goto err;
}
}
}
return libsrt_setup(h, uri, flags);
err:
av_freep(&s->smoother);
av_freep(&s->streamid);
return ret;
}
static int libsrt_read(URLContext *h, uint8_t *buf, int size)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment