Make sure we can handle clipboard data of any size.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4454 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index f522ca0..91daf9e 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -192,22 +192,27 @@
 
 int Viewport::handle(int event)
 {
-  char buffer[1024];
+  char *buffer;
   int ret;
   int buttonMask, wheelMask;
   DownMap::const_iterator iter;
 
   switch (event) {
   case FL_PASTE:
+    buffer = new char[Fl::event_length() + 1];
+
     // This is documented as to ASCII, but actually does to 8859-1
-    ret = fl_utf8toa(Fl::event_text(), Fl::event_length(), buffer, sizeof(buffer));
-    if (ret >= sizeof(buffer)) {
-      vlog.error(_("Clipboard buffer overflow!"));
-      return 1;
-    }
+    ret = fl_utf8toa(Fl::event_text(), Fl::event_length(), buffer,
+                     Fl::event_length() + 1);
+    assert(ret < (Fl::event_length() + 1));
+
     vlog.debug("Sending clipboard data: '%s'", buffer);
     cc->writer()->clientCutText(buffer, ret);
+
+    delete [] buffer;
+
     return 1;
+
   case FL_ENTER:
     // Yes, we would like some pointer events please!
     return 1;