]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
media: uvc: to the right check at uvc_ioctl_enum_framesizes()
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 23 Mar 2018 12:23:23 +0000 (08:23 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 23 Mar 2018 12:37:27 +0000 (08:37 -0400)
While the logic there is correct, it tricks both humans and
machines, a the check if "i" var is not zero is actually to
validate if the "frames" var was initialized when the loop
ran for the first time.

That produces the following warning:
drivers/media/usb/uvc/uvc_v4l2.c:1192 uvc_ioctl_enum_framesizes() error: potentially dereferencing uninitialized 'frame'.

Change the logic to do the right test instead.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/usb/uvc/uvc_v4l2.c

index 818a4369a51a34ce759e895c3fe4a9082f520c6b..bd32914259aed5b81b8f1fc62aa0d47826115ceb 100644 (file)
@@ -1173,7 +1173,7 @@ static int uvc_ioctl_enum_framesizes(struct file *file, void *fh,
        struct uvc_fh *handle = fh;
        struct uvc_streaming *stream = handle->stream;
        struct uvc_format *format = NULL;
-       struct uvc_frame *frame;
+       struct uvc_frame *frame = NULL;
        unsigned int index;
        unsigned int i;
 
@@ -1189,7 +1189,7 @@ static int uvc_ioctl_enum_framesizes(struct file *file, void *fh,
 
        /* Skip duplicate frame sizes */
        for (i = 0, index = 0; i < format->nframes; i++) {
-               if (i && frame->wWidth == format->frame[i].wWidth &&
+               if (frame && frame->wWidth == format->frame[i].wWidth &&
                    frame->wHeight == format->frame[i].wHeight)
                        continue;
                frame = &format->frame[i];