media: Check for active and has_no_links overrun
PATCH 1/1 media: Check for active and has_no_links overrun
From: Sakari Ailus <[email protected]>
The active and has_no_links arrays will overrun in media_entity_pipeline_start() if there's an entity which has more than MEDIA_ENTITY_MAX_PAD pads. Ensure in media_entity_init() that there are fewer pads than that.
Signed-off-by Sakari Ailus <[email protected]>
--- drivers/media/media-entity.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
drivers/media/media-entity.c +8 -5
@@ -214,12 +214,20 @@ void media_gobj_destroy(struct media_gobj *gobj) gobj->mdev =NULL ; } +/* +* TODO: Get rid of this. +*/ +#define MEDIA_ENTITY_MAX_PADS 512 +int media_entity_pads_init (struct media_entity *entity,u16 num_pads,struct media_pad *pads) {struct media_device *mdev = entity->graph_obj.mdev;unsigned int i; +if (num_pads >=MEDIA_ENTITY_MAX_PADS ) +return -E2BIG ; + entity->num_pads = num_pads; entity->pads = pads;
@@ -280,11 +288,6 @@ static struct media_entity *stack_pop(struct media_graph *graph)#define link_top (en) ((en)->stack[(en)->top].link)#define stack_top (en) ((en)->stack[(en)->top].entity) -/* -* TODO: Get rid of this. -*/ -#define MEDIA_ENTITY_MAX_PADS 512 -/** * media_graph_walk_init - Allocate resources for graph walk * @graph: Media graph structure that will be used to walk the graph
Signature · 1 line
2.11.0
Quoted 8 lines · Sakari Ailus
From: Sakari Ailus <[email protected]>
The active and
has_no_linksarrays will overrun inmedia_entity_pipeline_start()if there's an entity which has more thanMEDIA_ENTITY_MAX_PADpads. Ensure inmedia_entity_init()that there are fewer pads than that.Signed-off-by Sakari Ailus <[email protected]>
Acked-by Hans Verkuil <[email protected]>
Thanks!
Hans
Quoted 42 lines
--- drivers/media/media-entity.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)drivers/media/media-entity.c +8
-5@@ -214,12 +214,20 @@ void media_gobj_destroy(struct media_gobj *gobj) gobj->mdev =NULL ; } +/* +* TODO: Get rid of this. +*/ +#define MEDIA_ENTITY_MAX_PADS 512 +int media_entity_pads_init (struct media_entity *entity,u16 num_pads,struct media_pad *pads) {struct media_device *mdev = entity->graph_obj.mdev;unsigned int i; +if (num_pads >=MEDIA_ENTITY_MAX_PADS ) +return -E2BIG ; + entity->num_pads = num_pads; entity->pads = pads;@@ -280,11 +288,6 @@ static struct media_entity *stack_pop(struct media_graph *graph)#define link_top (en) ((en)->stack[(en)->top].link)#define stack_top (en) ((en)->stack[(en)->top].entity) -/* -* TODO: Get rid of this. -*/ -#define MEDIA_ENTITY_MAX_PADS 512 -/** * media_graph_walk_init - Allocate resources for graph walk * @graph: Media graph structure that will be used to walk the graph