Add a sanity-check to ensure only in-range subimages are referenced in %xd tags. Plus some tab policing.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16774 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2008-03-24 00:03:05 +00:00
parent 1644404fdd
commit 99c0978faa

View file

@ -443,6 +443,10 @@ static int parse_image_display(const char *wps_bufptr,
if ((subimage = get_image_id(wps_bufptr[1])) != -1) if ((subimage = get_image_id(wps_bufptr[1])) != -1)
{ {
/* Sanity check */
if (subimage >= wps_data->img[n].num_subimages)
return WPS_ERROR_INVALID_PARAM;
/* Store sub-image number to display in high bits */ /* Store sub-image number to display in high bits */
token->value.i = n | (subimage << 8); token->value.i = n | (subimage << 8);
return 2; /* We have consumed 2 bytes */ return 2; /* We have consumed 2 bytes */
@ -1382,7 +1386,7 @@ static void load_wps_bitmaps(struct wps_data *wps_data, char *bmpdir)
*loaded = true; *loaded = true;
/* Calculate and store height if this image has sub-images */ /* Calculate and store height if this image has sub-images */
if (n < MAX_IMAGES) if (n < MAX_IMAGES)
wps_data->img[n].subimage_height = wps_data->img[n].bm.height / wps_data->img[n].subimage_height = wps_data->img[n].bm.height /
wps_data->img[n].num_subimages; wps_data->img[n].num_subimages;
} }