Make it an error to supply a dup buffer to schemes that do not handle it
This commit is contained in:
@@ -47,7 +47,11 @@ impl Scheme for DebugScheme {
|
||||
Ok(id)
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let flags = {
|
||||
let handles = self.handles.read();
|
||||
*handles.get(&id).ok_or(Error::new(EBADF))?
|
||||
|
||||
@@ -90,7 +90,11 @@ impl Scheme for EnvScheme {
|
||||
}
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let new_handle = {
|
||||
let handles = self.handles.read();
|
||||
let handle = handles.get(&id).ok_or(Error::new(EBADF))?;
|
||||
|
||||
@@ -39,7 +39,11 @@ impl Scheme for EventScheme {
|
||||
Ok(id)
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let handle = {
|
||||
let handles = self.handles.read();
|
||||
let handle_weak = handles.get(&id).ok_or(Error::new(EBADF))?;
|
||||
|
||||
@@ -65,7 +65,11 @@ impl Scheme for InitFsScheme {
|
||||
Err(Error::new(ENOENT))
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let (path, flags, data, mode, seek) = {
|
||||
let handles = self.handles.read();
|
||||
let handle = handles.get(&id).ok_or(Error::new(EBADF))?;
|
||||
|
||||
@@ -48,7 +48,11 @@ impl Scheme for IrqScheme {
|
||||
}
|
||||
}
|
||||
|
||||
fn dup(&self, file: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, file: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
Ok(file)
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,11 @@ impl Scheme for DiskScheme {
|
||||
Ok(id)
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let (path, data, mode, seek) = {
|
||||
let handles = self.handles.read();
|
||||
let handle = handles.get(&id).ok_or(Error::new(EBADF))?;
|
||||
|
||||
@@ -8,7 +8,11 @@ impl Scheme for NullScheme {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
fn dup(&self, _file: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, _file: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,11 @@ impl PipeScheme {
|
||||
}
|
||||
|
||||
impl Scheme for PipeScheme {
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let mut pipes = pipes_mut();
|
||||
|
||||
let read_option = if let Some(pipe) = pipes.0.get(&id) {
|
||||
|
||||
@@ -71,7 +71,11 @@ impl Scheme for RootScheme {
|
||||
}
|
||||
}
|
||||
|
||||
fn dup(&self, file: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, file: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let mut handles = self.handles.write();
|
||||
let inner = {
|
||||
let inner = handles.get(&file).ok_or(Error::new(EBADF))?;
|
||||
|
||||
@@ -100,7 +100,11 @@ impl Scheme for SysScheme {
|
||||
Err(Error::new(ENOENT))
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let (path, data, mode, seek) = {
|
||||
let handles = self.handles.read();
|
||||
let handle = handles.get(&id).ok_or(Error::new(EBADF))?;
|
||||
|
||||
@@ -45,7 +45,11 @@ impl Scheme for TimeScheme {
|
||||
Ok(id)
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
let clock = {
|
||||
let handles = self.handles.read();
|
||||
*handles.get(&id).ok_or(Error::new(EBADF))?
|
||||
|
||||
@@ -8,7 +8,11 @@ impl Scheme for ZeroScheme {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
fn dup(&self, _file: usize, _buf: &[u8]) -> Result<usize> {
|
||||
fn dup(&self, _file: usize, buf: &[u8]) -> Result<usize> {
|
||||
if ! buf.is_empty() {
|
||||
return Err(Error::new(ENOENT));
|
||||
}
|
||||
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user