zoneid = mrp_zone_get_id(zone);
zonename = mrp_zone_get_name(zone);
- areas = screen->zones + zoneid;
- grantid = ++(screen->grantids[zoneid]);
+
+ /* We got a nonsense zone id */
+ if (zoneid >= MRP_ZONE_MAX) {
+ mrp_debug("invalid zoneid '" PRIu32 "' is larger than MRP_ZONE_MAX (%d), "
+ "bailing", zoneid, MRP_ZONE_MAX);
+ return;
+ }
if (!zonename)
zonename = "<unknown>";
+ areas = screen->zones + zoneid;
+ grantid = ++(screen->grantids[zoneid]);
+
mrp_list_foreach(areas, aentry, an) {
area = mrp_list_entry(aentry, mrp_resmgr_screen_area_t, link);
resources = &area->resources;
zoneid = mrp_zone_get_id(zone);
zonename = mrp_zone_get_name(zone);
+
+ /* We got a nonsense zone id */
+ if (zoneid >= MRP_ZONE_MAX) {
+ mrp_debug("invalid zoneid '" PRIu32 "' is larger than MRP_ZONE_MAX (%d), "
+ "bailing", zoneid, MRP_ZONE_MAX);
+ return;
+ }
+
areas = screen->zones + zoneid;
grantid = screen->grantids[zoneid];
zoneid = mrp_zone_get_id(zone);
zonename = mrp_zone_get_name(zone);
+ /* We got a nonsense zone id */
+ if (zoneid >= MRP_ZONE_MAX) {
+ mrp_debug("invalid zoneid '" PRIu32 "' is larger than MRP_ZONE_MAX (%d), "
+ "bailing", zoneid, MRP_ZONE_MAX);
+ return;
+ }
+
if (!zonename)
zonename = "<unknown>";
MRP_ASSERT(zone && res && screen && screen->resmgr, "invalid argument");
zoneid = mrp_zone_get_id(zone);
+
+ /* We got a nonsense zone id */
+ if (zoneid >= MRP_ZONE_MAX) {
+ mrp_debug("invalid zoneid '" PRIu32 "' is larger than MRP_ZONE_MAX (%d), "
+ "bailing", zoneid, MRP_ZONE_MAX);
+ return FALSE;
+ }
+
grantid = screen->grantids[zoneid];
if (!(zonename = mrp_zone_get_name(zone)))
zoneid = mrp_zone_get_id(zone);
+ /* We got a nonsense zone id */
+ if (zoneid >= MRP_ZONE_MAX) {
+ mrp_debug("invalid zoneid '" PRIu32 "' is larger than MRP_ZONE_MAX (%d), "
+ "bailing", zoneid, MRP_ZONE_MAX);
+ return;
+ }
+
if (!(zonename = mrp_zone_get_name(zone)))
zonename = "<unknown>";