-
Notifications
You must be signed in to change notification settings - Fork 149
Open
Description
If you pass XdgToplevel::set_title a String with embedded 0 bytes (which is valid for a String), you will get a panic with a backtrace that kinda looks like this:
thread 'main' panicked at ...
xdg.rs:138:5:
called `Result::unwrap()` on an `Err` value: NulError(<bytes>)
stack backtrace:
0: rust_begin_unwind
1: core::panicking::panic_fmt
2: core::result::unwrap_failed
3: <wayland_protocols::xdg::shell::generated::client::xdg_toplevel::XdgToplevel as wayland_client::Proxy>::write_request
4: wayland_client::conn::Connection::send_request
5: wayland_protocols::xdg::shell::generated::client::xdg_toplevel::XdgToplevel::set_title
This is a fairly obtuse error, but digging into the library, it appears this is because string arguments are converted to CStrings internally, with an unwrap:
wayland-rs/wayland-scanner/src/common.rs
Line 541 in df56d7d
| vec![quote! { Argument::Str(#arg_name.map(|s| Box::new(std::ffi::CString::new(s).unwrap()))) }] |
If wayland-scanner doesn't want to handle this error, then it makes no sense for String arguments to be String, when they should instead just be
std::ffi::CString and leave it on callers to deal with constructing it.laycookie and bbb651
Metadata
Metadata
Assignees
Labels
No labels