]> source.dussan.org Git - tigervnc.git/commitdiff
Fix depth sanity test in PixelFormat
authorPierre Ossman <ossman@cendio.se>
Tue, 10 Sep 2019 14:01:44 +0000 (16:01 +0200)
committerPierre Ossman <ossman@cendio.se>
Fri, 20 Dec 2019 06:29:00 +0000 (07:29 +0100)
(cherry picked from commit f1b9b868ec943d51ef631f53a095d48d3f178f4f)

common/rfb/PixelFormat.cxx
tests/unit/pixelformat.cxx

index 0be4d1da4d8895f9c57f4eefe4c5095f5aaa36cc..2d8142d157a774bb73c132025fd596246b9bdf7e 100644 (file)
@@ -679,7 +679,7 @@ bool PixelFormat::isSane(void)
     return false;
 
   totalBits = bits(redMax) + bits(greenMax) + bits(blueMax);
-  if (totalBits > bpp)
+  if (totalBits > depth)
     return false;
 
   if (((redMax << redShift) & (greenMax << greenShift)) != 0)
index 4eb452813cc53d062486800663aefbcb2680cfb1..7b6087f7bc66bb96ed0593ee8786744db6fbabe1 100644 (file)
@@ -104,6 +104,10 @@ int main(int argc, char** argv)
     doTest(true, 32, 24, false, true, 127, 511, 127, 0, 4, 20);
     doTest(true, 32, 24, false, true, 127, 127, 511, 0, 4, 8);
 
+    /* Insufficient depth */
+
+    doTest(true, 32, 16, false, true, 255, 255, 255, 0, 8, 16);
+
     /* Overlapping channels */
 
     doTest(true, 32, 24, false, true, 255, 255, 255, 0, 7, 16);