basetextoverlay: segfault when xpos >= video size

When the xpos is given as greater than or equal to the video size,
we get a segfault, due to improper condition.
Hence adding proper conditions.

https://bugzilla.gnome.org/show_bug.cgi?id=738984
This commit is contained in:
Vineeth T M 2014-10-23 14:38:07 +05:30 committed by Luis de Bethencourt
parent cd1f1c4973
commit 900d0267d5

View file

@ -1349,7 +1349,7 @@ gst_base_text_overlay_get_pos (GstBaseTextOverlay * overlay,
gint width, height; gint width, height;
GstBaseTextOverlayVAlign valign; GstBaseTextOverlayVAlign valign;
GstBaseTextOverlayHAlign halign; GstBaseTextOverlayHAlign halign;
*ypos = 0;
width = overlay->image_width; width = overlay->image_width;
height = overlay->image_height; height = overlay->image_height;
@ -1378,8 +1378,9 @@ gst_base_text_overlay_get_pos (GstBaseTextOverlay * overlay,
*xpos = 0; *xpos = 0;
} }
*xpos += overlay->deltax; *xpos += overlay->deltax;
if (*xpos > overlay->width) { if (*xpos > overlay->width || *xpos < 0) {
/* Clip text if out of frame */ /* Clip text if out of frame */
*xpos = 0;
overlay->silent = TRUE; overlay->silent = TRUE;
} else { } else {
if (overlay->use_vertical_render) if (overlay->use_vertical_render)
@ -1409,8 +1410,9 @@ gst_base_text_overlay_get_pos (GstBaseTextOverlay * overlay,
break; break;
} }
*ypos += overlay->deltay; *ypos += overlay->deltay;
if (*ypos > overlay->height) { if (*ypos > overlay->height || *ypos < 0) {
/* Clip text if out of frame */ /* Clip text if out of frame */
*ypos = 0;
overlay->silent = TRUE; overlay->silent = TRUE;
} }
} }