Fix uninitialized pointer dereference in media_device_add_entity
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 30 May 2014 15:13:41 +0000 (17:13 +0200)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 30 May 2014 15:13:41 +0000 (17:13 +0200)
When the entity being added has the default flag set, the function tries
to set the entity as the default entity for its type by storing the
entity pointer in the appropriate default entity field. If the entity
type isn't recognized, the default entity pointer is left uninitialized,
leading to a crash. Fix it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
src/mediactl.c

index 6e2d29a..1f92987 100644 (file)
@@ -717,7 +717,7 @@ int media_device_add_entity(struct media_device *media,
                            const struct media_entity_desc *desc,
                            const char *devnode)
 {
-       struct media_entity **defent;
+       struct media_entity **defent = NULL;
        struct media_entity *entity;
        unsigned int size;
 
@@ -763,7 +763,8 @@ int media_device_add_entity(struct media_device *media,
 
        if (desc->flags & MEDIA_ENT_FL_DEFAULT) {
                entity->info.flags |= MEDIA_ENT_FL_DEFAULT;
-               *defent = entity;
+               if (defent)
+                       *defent = entity;
        }
 
        return 0;