> This commit fixes the JVM crash caused by bad Clipboard data on Linux.
> 
> On Windows the Clipboard is a bit more generic in how it operates - even if 
> the MIME type mismatches, the Clipboard will accept any object and then 
> return it. GTK is less generic in this regard (at least our Glass 
> implementation) so for cases like text it requires us to fetch the String 
> contents and set those directly onto the Clipboard.
> 
> Moreover, `ClipboardContent` is simply an extension of `HashMap` which 
> exposes `put()` and lets us assign whatever object we want to whatever MIME 
> type we want. As such, if we follow the example code from the JDK issue, we 
> would try to fetch String contents from something that is not a String, 
> causing SIGSEGV.
> 
> Fix was done by type-checking incoming `ClipboardContent` data. I saw that 
> this can also happen in other content types than text, so I guarded those as 
> well. If types are not what we expect them to be, the attempt to update the 
> System Clipboard is silently discarded and the crash is avoided. According to 
> my manual testing, as long as data types are correct everything seems to work 
> fine.
> 
> As a side-note, this also shows there is discrepancy in how `Clipboard` 
> operates between platforms. We should unify that behavior, but that is a 
> larger task which will be solved under 
> [JDK-8373090](https://bugs.openjdk.org/browse/JDK-8373090).

Lukasz Kostyra has updated the pull request incrementally with one additional 
commit since the last revision:

  Review: Move jstring cast

-------------

Changes:
  - all: https://git.openjdk.org/jfx/pull/1999/files
  - new: https://git.openjdk.org/jfx/pull/1999/files/0ad0aaf5..ff278dd2

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1999&range=01
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1999&range=00-01

  Stats: 6 lines in 1 file changed: 0 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jfx/pull/1999.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1999/head:pull/1999

PR: https://git.openjdk.org/jfx/pull/1999

Reply via email to