GNOME Bugzilla – Bug 523891
PATCH: stop pwlib from causing crash when rescaling bayer v4l data to yuv420
Last modified: 2008-04-03 08:56:08 UTC
Hi, I encountered this crash in ekiga while writing a v4l2 device driver for a pac207 usb webcam (*). I was testing my driver with ekiga and at first I blamed my driver, but a few hours later I know better. ekiga uses pwlib to access webcam's, and pwlib's vconvert.cxx, and converters from that class should be able to handle both pixelformat changes as scaling. However the SBGGR8toYUV420P converter always assumes that the input image and the output image are the same, without checking this, causing memory corruption (a buffer overflow) when they differ in size. This patch fixes this by using the currently #ifdef-ed out slower path when the sizes differ. It also fixes the (wrongly) swapping of red and blue in this (before this patch unused) path.
Created attachment 107827 [details] [review] PATCH: stop pwlib from causing crash when rescaling bayer v4l data to yuv420 The promised patch.
Oops forgot to explain the (*): (*) I know this cam is supported by gspca, thats where I'm getting the info needed to write the driver for. I'm writing a new standalone v4l2 (no in kernel bayer -> rgb conversion) driver, which should adhere to all kernel coding standards, making it suitable for upstream/mainline inclusion.
I'll try to ping Luc about it, thanks!
It has been fixed in PWLIB trunk. Thanks for the fix!
I even backported it to Phobos.