]> source.dussan.org Git - tigervnc.git/commitdiff
Move custom FLTK box types to valid range
authorPierre Ossman <ossman@cendio.se>
Thu, 17 Aug 2023 12:46:04 +0000 (14:46 +0200)
committerPierre Ossman <ossman@cendio.se>
Thu, 17 Aug 2023 12:46:04 +0000 (14:46 +0200)
FLTK only allows 256 different box types, but it doesn't actually check
this when registering new ones.

Move our custom types to a valid range, and add an assert for good
measure to make sure we don't overflow FLTK's internal structures.

vncviewer/fltk/theme.cxx
vncviewer/fltk/theme.h

index f89933a315587aa90a559305fde36040a3f0c59d..22e04dc66f2fb25960d9f97d587f70838f841172 100644 (file)
@@ -25,6 +25,8 @@
 #include <config.h>
 #endif
 
+#include <assert.h>
+
 #ifdef WIN32
 #include <windows.h>
 #endif
@@ -271,6 +273,9 @@ void init_theme()
   const int PX = 2;
   const int PY = 2;
 
+  // FLTK lacks a bounds check
+  assert(THEME_ROUND_DOWN_BOX < 256);
+
   Fl::set_boxtype(THEME_UP_FRAME, theme_up_frame, PX, PY, PX*2, PY*2);
   Fl::set_boxtype(THEME_DOWN_FRAME, theme_down_frame, PX, PY, PX*2, PY*2);
   Fl::set_boxtype(THEME_THIN_UP_FRAME, theme_up_frame, PX, PY, PX*2, PY*2);
index 8793bd7cd4d6b6f39e553c56bd6191b7e07557f9..b6a532188f99dc5f6f2e024f263ad2e763140395 100644 (file)
@@ -26,7 +26,7 @@
 
 #include <FL/Enumerations.H>
 
-#define _THEME_BOX_BASE         (FL_FREE_BOXTYPE+1000)
+#define _THEME_BOX_BASE         (FL_FREE_BOXTYPE+20)
 
 #define THEME_UP_FRAME          (Fl_Boxtype)(_THEME_BOX_BASE+0)
 #define THEME_DOWN_FRAME        (Fl_Boxtype)(_THEME_BOX_BASE+1)