Correct an inequality sign causing the bounds check in Windows
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 22 Jul 2013 07:12:26 +0000 (07:12 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 22 Jul 2013 07:12:26 +0000 (07:12 +0000)
palette_set() to be bogus. Fortunately, this isn't exploitable through
the terminal emulator, because the palette escape sequence parser
contains its own bounds check before even calling palette_set().

While I'm at it, fix the same goof in the OS X version! That port is
more or less abandoned, but that's no excuse for leaving obviously
wrong code lying around.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9965 cda61777-01e9-0310-a592-d414129be87e

macosx/osxwin.m
windows/window.c

index 169ae64..b58742d 100644 (file)
@@ -957,7 +957,7 @@ void palette_set(void *frontend, int n, int r, int g, int b)
 
     if (n >= 16)
        n += 256 - 16;
-    if (n > NALLCOLOURS)
+    if (n >= NALLCOLOURS)
        return;
     [win setColour:n r:r/255.0 g:g/255.0 b:b/255.0];
 
index b477d6a..f1f7252 100644 (file)
@@ -4805,7 +4805,7 @@ void palette_set(void *frontend, int n, int r, int g, int b)
 {
     if (n >= 16)
        n += 256 - 16;
-    if (n > NALLCOLOURS)
+    if (n >= NALLCOLOURS)
        return;
     real_palette_set(n, r, g, b);
     if (pal) {