summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine
diff options
context:
space:
mode:
authorTeruaki Kawashima <teru@rockbox.org>2010-10-11 13:08:49 +0000
committerTeruaki Kawashima <teru@rockbox.org>2010-10-11 13:08:49 +0000
commit59f487205c891d46530fc398ab92ec73c222a59f (patch)
tree934e7a1e404328da98f244b6d8fb2f1134db48cd /apps/gui/skin_engine
parent8e8839c8c2e5eadf3aac0b109b0cf62b9b1faf0b (diff)
downloadrockbox-59f487205c891d46530fc398ab92ec73c222a59f.zip
rockbox-59f487205c891d46530fc398ab92ec73c222a59f.tar.gz
rockbox-59f487205c891d46530fc398ab92ec73c222a59f.tar.bz2
rockbox-59f487205c891d46530fc398ab92ec73c222a59f.tar.xz
check viewport dimension when parsing viewport so that player doesn't clash with bad wps.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28244 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/skin_engine')
-rw-r--r--apps/gui/skin_engine/skin_parser.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 9475e5f..75b4c42 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -1313,10 +1313,14 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element)
{
skin_vp->vp.font = param->data.number;
}
-#endif
+#endif
+ if ((unsigned) skin_vp->vp.x >= (unsigned) display->lcdwidth ||
+ skin_vp->vp.width + skin_vp->vp.x > display->lcdwidth ||
+ (unsigned) skin_vp->vp.y >= (unsigned) display->lcdheight ||
+ skin_vp->vp.height + skin_vp->vp.y > display->lcdheight)
+ return CALLBACK_ERROR;
return CALLBACK_OK;
-
}
static int skin_element_callback(struct skin_element* element, void* data)