From 473ac85faa32166697ea954c01e9227397c744b3 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 22 Jul 2017 13:17:48 -0600 Subject: [PATCH] Return error when dup buf is not empty --- ahcid/src/scheme.rs | 6 +++++- alxd/src/device/mod.rs | 6 +++++- e1000d/src/device.rs | 6 +++++- rtl8168d/src/device.rs | 6 +++++- vesad/src/scheme.rs | 6 +++++- 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/ahcid/src/scheme.rs b/ahcid/src/scheme.rs index f36ad7bb02..d76b046232 100644 --- a/ahcid/src/scheme.rs +++ b/ahcid/src/scheme.rs @@ -70,7 +70,11 @@ impl Scheme for DiskScheme { } } - fn dup(&self, id: usize, _buf: &[u8]) -> Result { + fn dup(&self, id: usize, buf: &[u8]) -> Result { + if ! buf.is_empty() { + return Err(Error::new(EINVAL)); + } + let mut handles = self.handles.lock(); let new_handle = { let handle = handles.get(&id).ok_or(Error::new(EBADF))?; diff --git a/alxd/src/device/mod.rs b/alxd/src/device/mod.rs index ba6219e6e5..9bfc9f0f08 100644 --- a/alxd/src/device/mod.rs +++ b/alxd/src/device/mod.rs @@ -1797,7 +1797,11 @@ impl scheme::SchemeMut for Alx { } } - fn dup(&mut self, id: usize, _buf: &[u8]) -> Result { + fn dup(&mut self, id: usize, buf: &[u8]) -> Result { + if ! buf.is_empty() { + return Err(Error::new(EINVAL)); + } + Ok(id) } diff --git a/e1000d/src/device.rs b/e1000d/src/device.rs index 194dd4eef7..bb926946a2 100644 --- a/e1000d/src/device.rs +++ b/e1000d/src/device.rs @@ -110,7 +110,11 @@ impl Scheme for Intel8254x { } } - fn dup(&self, id: usize, _buf: &[u8]) -> Result { + fn dup(&self, id: usize, buf: &[u8]) -> Result { + if ! buf.is_empty() { + return Err(Error::new(EINVAL)); + } + Ok(id) } diff --git a/rtl8168d/src/device.rs b/rtl8168d/src/device.rs index a3c8ac476f..0076fbe480 100644 --- a/rtl8168d/src/device.rs +++ b/rtl8168d/src/device.rs @@ -83,7 +83,11 @@ impl SchemeMut for Rtl8168 { } } - fn dup(&mut self, id: usize, _buf: &[u8]) -> Result { + fn dup(&mut self, id: usize, buf: &[u8]) -> Result { + if ! buf.is_empty() { + return Err(Error::new(EINVAL)); + } + Ok(id) } diff --git a/vesad/src/scheme.rs b/vesad/src/scheme.rs index bc933d7255..34ea333d70 100644 --- a/vesad/src/scheme.rs +++ b/vesad/src/scheme.rs @@ -114,7 +114,11 @@ impl SchemeMut for DisplayScheme { } } - fn dup(&mut self, id: usize, _buf: &[u8]) -> Result { + fn dup(&mut self, id: usize, buf: &[u8]) -> Result { + if ! buf.is_empty() { + return Err(Error::new(EINVAL)); + } + let handle = self.handles.get(&id).map(|handle| handle.clone()).ok_or(Error::new(EBADF))?; let new_id = self.next_id;