summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-07-06 16:17:26 +0000
committerAlyssa Ross <hi@alyssa.is>2020-07-06 16:22:27 +0000
commitc612facef385949daec552c2679491e71d2311e5 (patch)
tree789f4634c0f4d9bc8cea94af0b9232f95972b2d1 /src
parent7214f019550c6c8766b65c145640d34d5550db78 (diff)
downloadcrosvm-c612facef385949daec552c2679491e71d2311e5.tar
crosvm-c612facef385949daec552c2679491e71d2311e5.tar.gz
crosvm-c612facef385949daec552c2679491e71d2311e5.tar.bz2
crosvm-c612facef385949daec552c2679491e71d2311e5.tar.lz
crosvm-c612facef385949daec552c2679491e71d2311e5.tar.xz
crosvm-c612facef385949daec552c2679491e71d2311e5.tar.zst
crosvm-c612facef385949daec552c2679491e71d2311e5.zip
crosvm: make wl add take socket as fd
Diffstat (limited to 'src')
-rw-r--r--src/main.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index 7b47d3c..611dd29 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -12,6 +12,7 @@ use std::fs::{File, OpenOptions};
 use std::io::{BufRead, BufReader};
 use std::num::ParseIntError;
 use std::os::unix::io::{FromRawFd, RawFd};
+use std::os::unix::net::UnixStream;
 use std::path::{Path, PathBuf};
 use std::string::String;
 use std::thread::sleep;
@@ -2191,8 +2192,10 @@ fn wl_cmd(mut args: std::env::Args) -> std::result::Result<(), ()> {
     let request = match subcommand {
         "add" => {
             let name = args.next().unwrap().as_bytes().to_vec();
-            let path = args.next().unwrap().into();
-            VmRequest::WlCommand(WlControlCommand::AddSocket { name, path })
+            // Safe because we're taking ownership of descriptor 3, and won't use it for anything
+            // else.
+            let socket = unsafe { UnixStream::from_raw_fd(3) };
+            VmRequest::WlCommand(WlControlCommand::AddSocket { name, socket })
         }
         _ => {
             error!("Unknown wl subcommand '{}'", subcommand);