mirror of
https://github.com/wez/wezterm.git
synced 2024-11-28 01:06:37 +03:00
window: x11: avoid potential crash when pasting non-utf8 text
This might "break" eg: pasting from apps that just use ATOM_STRING and that happen to have utf-8 compatible text. Ideally the get_text_property interface would expose the actual text encoding in the returned data and allow the application to "do stuff" with it. refs: https://github.com/meh/rust-xcb-util/issues/21
This commit is contained in:
parent
a79fc87586
commit
c9f1f0e12c
@ -574,16 +574,21 @@ impl XWindowInner {
|
|||||||
let conn = self.conn();
|
let conn = self.conn();
|
||||||
|
|
||||||
log::trace!(
|
log::trace!(
|
||||||
"SELECTION_NOTIFY received selection={} (prim={} clip={}) target={} property={}",
|
"SELECTION_NOTIFY received selection={} (prim={} clip={}) target={} property={} utf8={}",
|
||||||
selection.selection(),
|
selection.selection(),
|
||||||
xcb::ATOM_PRIMARY,
|
xcb::ATOM_PRIMARY,
|
||||||
conn.atom_clipboard,
|
conn.atom_clipboard,
|
||||||
selection.target(),
|
selection.target(),
|
||||||
selection.property()
|
selection.property(),
|
||||||
|
self.conn().atom_utf8_string,
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Some(clipboard) = self.selection_atom_to_clipboard(selection.selection()) {
|
if let Some(clipboard) = self.selection_atom_to_clipboard(selection.selection()) {
|
||||||
if selection.property() != xcb::NONE {
|
if selection.property() != xcb::NONE
|
||||||
|
// Restrict to strictly UTF-8 to avoid crashing; see
|
||||||
|
// <https://github.com/meh/rust-xcb-util/issues/21>
|
||||||
|
&& selection.target() == self.conn().atom_utf8_string
|
||||||
|
{
|
||||||
match xcb_util::icccm::get_text_property(
|
match xcb_util::icccm::get_text_property(
|
||||||
&conn,
|
&conn,
|
||||||
selection.requestor(),
|
selection.requestor(),
|
||||||
|
Loading…
Reference in New Issue
Block a user