videotestsrc: fix undefined behaviour of left-shift
authorLuis de Bethencourt <luis@debethencourt.com>
Tue, 29 Apr 2014 14:15:47 +0000 (10:15 -0400)
committerLuis de Bethencourt <luis@debethencourt.com>
Tue, 29 Apr 2014 14:59:32 +0000 (10:59 -0400)
With a small type for the color values being left-shifted, the result is
undefined and it could potentially overflow.

https://bugzilla.gnome.org/show_bug.cgi?id=729195

gst/videotestsrc/videotestsrc.c

index 1235782..b4adf90 100644 (file)
@@ -1134,9 +1134,9 @@ paint_tmpline_AYUV (paintinfo * p, int x, int w)
 
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
   value = (p->color->A << 0) | (p->color->Y << 8) |
-      (p->color->U << 16) | (p->color->V << 24);
+      (p->color->U << 16) | ((guint32) p->color->V << 24);
 #else
-  value = (p->color->A << 24) | (p->color->Y << 16) |
+  value = ((guint32) p->color->A << 24) | (p->color->Y << 16) |
       (p->color->U << 8) | (p->color->V << 0);
 #endif