summary refs log tree commit diff
path: root/sys_util/src/sock_ctrl_msg.rs
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor@chromium.org>2018-02-27 10:26:34 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-03-01 16:13:05 -0800
commit8b32d55ae2b8c3a199856759ef16ab7c4435024e (patch)
treeced334ad75f892336e1b2f21aa5729297d3e9559 /sys_util/src/sock_ctrl_msg.rs
parent9c7508593d2cdd14b6ac22e1d30eaae266e4a1b8 (diff)
downloadcrosvm-8b32d55ae2b8c3a199856759ef16ab7c4435024e.tar
crosvm-8b32d55ae2b8c3a199856759ef16ab7c4435024e.tar.gz
crosvm-8b32d55ae2b8c3a199856759ef16ab7c4435024e.tar.bz2
crosvm-8b32d55ae2b8c3a199856759ef16ab7c4435024e.tar.lz
crosvm-8b32d55ae2b8c3a199856759ef16ab7c4435024e.tar.xz
crosvm-8b32d55ae2b8c3a199856759ef16ab7c4435024e.tar.zst
crosvm-8b32d55ae2b8c3a199856759ef16ab7c4435024e.zip
sys_util: properly convert errors in sock_ctrl_msg
scm_sendmsg() and scm_recvmsg() return negative errors derived from
errnos that are normally positive. When constructing errno::Error from
these error codes we should convert them back into positive values for
error codes to make proper sense.

TEST=cargo test --features plugin; cargo test -p sys_util
BUG=None

Change-Id: Ibf9065b72602e43cb6badd06f85044329d714276
Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/940562
Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'sys_util/src/sock_ctrl_msg.rs')
-rw-r--r--sys_util/src/sock_ctrl_msg.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys_util/src/sock_ctrl_msg.rs b/sys_util/src/sock_ctrl_msg.rs
index 545e1f2..8a3ce39 100644
--- a/sys_util/src/sock_ctrl_msg.rs
+++ b/sys_util/src/sock_ctrl_msg.rs
@@ -154,7 +154,7 @@ impl Scm {
         };
 
         if write_count < 0 {
-            Err(Error::new(write_count as i32))
+            Err(Error::new(-write_count as i32))
         } else {
             Ok(write_count as usize)
         }
@@ -201,7 +201,7 @@ impl Scm {
         };
 
         if read_count < 0 {
-            Err(Error::new(read_count as i32))
+            Err(Error::new(-read_count as i32))
         } else {
             // Safe because we have unqiue ownership of each fd we wrap with File.
             for &fd in &self.fds[0..fd_count] {