diff --git a/src/ethernetd/scheme.rs b/src/ethernetd/scheme.rs index bbd6bc94df..f6da2aa7a3 100644 --- a/src/ethernetd/scheme.rs +++ b/src/ethernetd/scheme.rs @@ -85,7 +85,11 @@ impl SchemeMut for EthernetScheme { } } - 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 next_id = self.next_id; self.next_id += 1; diff --git a/src/ipd/main.rs b/src/ipd/main.rs index 49e332fcf7..c5ce140634 100644 --- a/src/ipd/main.rs +++ b/src/ipd/main.rs @@ -150,7 +150,11 @@ impl SchemeMut for Ipd { } } - fn dup(&mut self, file: usize, _buf: &[u8]) -> Result { + fn dup(&mut self, file: usize, buf: &[u8]) -> Result { + if ! buf.is_empty() { + return Err(Error::new(EINVAL)); + } + let handle = { let handle = self.handles.get(&file).ok_or(Error::new(EBADF))?; Handle {