summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOneric <oneric@oneric.stub>2022-09-09 18:12:18 +0200
committerOneric <oneric@oneric.stub>2022-09-15 18:40:29 +0200
commit717cb93daa15c3684c502eab092f1341cd0a21e0 (patch)
treedb7cd7f798caca9472839bb523e57586aa952c09
parent5b0dba4b012f8aa8231125a78fec6b8aabee8bdf (diff)
downloadlibass-717cb93daa15c3684c502eab092f1341cd0a21e0.tar.bz2
libass-717cb93daa15c3684c502eab092f1341cd0a21e0.tar.xz
render_api: sanitise user-supplied values early
We often only check for != 0, later on, with zero being "unset", but negative values would obviously be bogus here.
-rw-r--r--libass/ass_render_api.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/libass/ass_render_api.c b/libass/ass_render_api.c
index 70cf174..4790565 100644
--- a/libass/ass_render_api.c
+++ b/libass/ass_render_api.c
@@ -51,6 +51,8 @@ static void ass_reconfigure(ASS_Renderer *priv)
void ass_set_frame_size(ASS_Renderer *priv, int w, int h)
{
+ if (w < 0 || h < 0)
+ w = h = 0;
if (priv->settings.frame_width != w || priv->settings.frame_height != h) {
priv->settings.frame_width = w;
priv->settings.frame_height = h;
@@ -60,6 +62,8 @@ void ass_set_frame_size(ASS_Renderer *priv, int w, int h)
void ass_set_storage_size(ASS_Renderer *priv, int w, int h)
{
+ if (w < 0 || h < 0)
+ w = h = 0;
if (priv->settings.storage_width != w ||
priv->settings.storage_height != h) {
priv->settings.storage_width = w;
@@ -101,6 +105,7 @@ void ass_set_aspect_ratio(ASS_Renderer *priv, double dar, double sar)
void ass_set_pixel_aspect(ASS_Renderer *priv, double par)
{
+ if (par < 0) par = 0;
if (priv->settings.par != par) {
priv->settings.par = par;
ass_reconfigure(priv);