summaryrefslogtreecommitdiff
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
parent8e8839c8c2e5eadf3aac0b109b0cf62b9b1faf0b (diff)
downloadrockbox-59f487205c891d46530fc398ab92ec73c222a59f.tar.gz
rockbox-59f487205c891d46530fc398ab92ec73c222a59f.zip
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
-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 9475e5feb5..75b4c4298f 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)
1313 { 1313 {
1314 skin_vp->vp.font = param->data.number; 1314 skin_vp->vp.font = param->data.number;
1315 } 1315 }
1316#endif 1316#endif
1317 if ((unsigned) skin_vp->vp.x >= (unsigned) display->lcdwidth ||
1318 skin_vp->vp.width + skin_vp->vp.x > display->lcdwidth ||
1319 (unsigned) skin_vp->vp.y >= (unsigned) display->lcdheight ||
1320 skin_vp->vp.height + skin_vp->vp.y > display->lcdheight)
1321 return CALLBACK_ERROR;
1317 1322
1318 return CALLBACK_OK; 1323 return CALLBACK_OK;
1319
1320} 1324}
1321 1325
1322static int skin_element_callback(struct skin_element* element, void* data) 1326static int skin_element_callback(struct skin_element* element, void* data)