rtmpproto: Check APP_MAX_LENGTH
Fixes Ticket2292
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 02ac3398eb)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -2156,16 +2156,20 @@ static int rtmp_open(URLContext *s, const char *uri, int flags)
|
|||||||
fname = strchr(p + 1, '/');
|
fname = strchr(p + 1, '/');
|
||||||
if (!fname || (c && c < fname)) {
|
if (!fname || (c && c < fname)) {
|
||||||
fname = p + 1;
|
fname = p + 1;
|
||||||
av_strlcpy(rt->app, path + 1, p - path);
|
av_strlcpy(rt->app, path + 1, FFMIN(p - path, APP_MAX_LENGTH));
|
||||||
} else {
|
} else {
|
||||||
fname++;
|
fname++;
|
||||||
av_strlcpy(rt->app, path + 1, fname - path - 1);
|
av_strlcpy(rt->app, path + 1, FFMIN(fname - path - 1, APP_MAX_LENGTH));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_app) {
|
if (old_app) {
|
||||||
// The name of application has been defined by the user, override it.
|
// The name of application has been defined by the user, override it.
|
||||||
|
if (strlen(old_app) >= APP_MAX_LENGTH) {
|
||||||
|
ret = AVERROR(EINVAL);
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
av_free(rt->app);
|
av_free(rt->app);
|
||||||
rt->app = old_app;
|
rt->app = old_app;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user