diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/ffi/call.rs | 4 | ||||
-rw-r--r-- | ext/ffi/callback.rs | 2 | ||||
-rw-r--r-- | ext/ffi/dlfcn.rs | 2 | ||||
-rw-r--r-- | ext/ffi/lib.rs | 2 | ||||
-rw-r--r-- | ext/ffi/repr.rs | 40 | ||||
-rw-r--r-- | ext/fs/lib.rs | 14 | ||||
-rw-r--r-- | ext/fs/ops.rs | 13 |
7 files changed, 47 insertions, 30 deletions
diff --git a/ext/ffi/call.rs b/ext/ffi/call.rs index 21358d851..82f8dd822 100644 --- a/ext/ffi/call.rs +++ b/ext/ffi/call.rs @@ -289,7 +289,7 @@ where { let mut state = state.borrow_mut(); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; }; let symbol = PtrSymbol::new(pointer, &def)?; @@ -389,7 +389,7 @@ where { let mut state = state.borrow_mut(); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; }; let symbol = PtrSymbol::new(pointer, &def)?; diff --git a/ext/ffi/callback.rs b/ext/ffi/callback.rs index e9d91855d..9a36815d0 100644 --- a/ext/ffi/callback.rs +++ b/ext/ffi/callback.rs @@ -546,7 +546,7 @@ where { check_unstable(state, "Deno.UnsafeCallback"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; let v8_value = cb.v8_value; let cb = v8::Local::<v8::Function>::try_from(v8_value)?; diff --git a/ext/ffi/dlfcn.rs b/ext/ffi/dlfcn.rs index 3af9177bf..ced64bec5 100644 --- a/ext/ffi/dlfcn.rs +++ b/ext/ffi/dlfcn.rs @@ -144,7 +144,7 @@ where check_unstable(state, "Deno.dlopen"); let permissions = state.borrow_mut::<FP>(); - permissions.check(Some(&PathBuf::from(&path)))?; + permissions.check_partial(Some(&PathBuf::from(&path)))?; let lib = Library::open(&path).map_err(|e| { dlopen::Error::OpeningLibraryError(std::io::Error::new( diff --git a/ext/ffi/lib.rs b/ext/ffi/lib.rs index 2d3bb2866..b5a2a3bd5 100644 --- a/ext/ffi/lib.rs +++ b/ext/ffi/lib.rs @@ -64,7 +64,7 @@ pub fn check_unstable2(state: &Rc<RefCell<OpState>>, api_name: &str) { } pub trait FfiPermissions { - fn check(&mut self, path: Option<&Path>) -> Result<(), AnyError>; + fn check_partial(&mut self, path: Option<&Path>) -> Result<(), AnyError>; } pub(crate) type PendingFfiAsyncWork = Box<dyn FnOnce()>; diff --git a/ext/ffi/repr.rs b/ext/ffi/repr.rs index 0e2f88084..665e37186 100644 --- a/ext/ffi/repr.rs +++ b/ext/ffi/repr.rs @@ -24,7 +24,7 @@ where { check_unstable(state, "Deno.UnsafePointer#create"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; Ok(ptr_number as *mut c_void) } @@ -40,7 +40,7 @@ where { check_unstable(state, "Deno.UnsafePointer#equals"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; Ok(a == b) } @@ -55,7 +55,7 @@ where { check_unstable(state, "Deno.UnsafePointer#of"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; Ok(buf as *mut c_void) } @@ -71,7 +71,7 @@ where { check_unstable(state, "Deno.UnsafePointer#offset"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid pointer to offset, pointer is null")); @@ -99,7 +99,7 @@ where { check_unstable(state, "Deno.UnsafePointer#value"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; let outptr = out.as_ptr() as *mut usize; let length = out.len(); @@ -129,7 +129,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getArrayBuffer"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid ArrayBuffer pointer, pointer is null")); @@ -164,7 +164,7 @@ where check_unstable(state, "Deno.UnsafePointerView#copyInto"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if src.is_null() { Err(type_error("Invalid ArrayBuffer pointer, pointer is null")) @@ -197,7 +197,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getCString"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid CString pointer, pointer is null")); @@ -227,7 +227,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getBool"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid bool pointer, pointer is null")); @@ -249,7 +249,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getUint8"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid u8 pointer, pointer is null")); @@ -273,7 +273,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getInt8"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid i8 pointer, pointer is null")); @@ -297,7 +297,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getUint16"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid u16 pointer, pointer is null")); @@ -321,7 +321,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getInt16"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid i16 pointer, pointer is null")); @@ -345,7 +345,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getUint32"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid u32 pointer, pointer is null")); @@ -367,7 +367,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getInt32"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid i32 pointer, pointer is null")); @@ -390,7 +390,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getBigUint64"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; let outptr = out.as_mut_ptr() as *mut u64; @@ -425,7 +425,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getBigUint64"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; let outptr = out.as_mut_ptr() as *mut i64; @@ -458,7 +458,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getFloat32"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid f32 pointer, pointer is null")); @@ -480,7 +480,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getFloat64"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid f64 pointer, pointer is null")); @@ -502,7 +502,7 @@ where check_unstable(state, "Deno.UnsafePointerView#getPointer"); let permissions = state.borrow_mut::<FP>(); - permissions.check(None)?; + permissions.check_partial(None)?; if ptr.is_null() { return Err(type_error("Invalid pointer pointer, pointer is null")); diff --git a/ext/fs/lib.rs b/ext/fs/lib.rs index d27712927..b028b12c1 100644 --- a/ext/fs/lib.rs +++ b/ext/fs/lib.rs @@ -23,7 +23,8 @@ use std::path::Path; use std::rc::Rc; pub trait FsPermissions { - fn check_read(&mut self, p: &Path, api_name: &str) -> Result<(), AnyError>; + fn check_read(&mut self, path: &Path, api_name: &str) + -> Result<(), AnyError>; fn check_read_all(&mut self, api_name: &str) -> Result<(), AnyError>; fn check_read_blind( &mut self, @@ -31,7 +32,16 @@ pub trait FsPermissions { display: &str, api_name: &str, ) -> Result<(), AnyError>; - fn check_write(&mut self, p: &Path, api_name: &str) -> Result<(), AnyError>; + fn check_write( + &mut self, + path: &Path, + api_name: &str, + ) -> Result<(), AnyError>; + fn check_write_partial( + &mut self, + path: &Path, + api_name: &str, + ) -> Result<(), AnyError>; fn check_write_all(&mut self, api_name: &str) -> Result<(), AnyError>; fn check_write_blind( &mut self, diff --git a/ext/fs/ops.rs b/ext/fs/ops.rs index 083d1b15f..da52318a4 100644 --- a/ext/fs/ops.rs +++ b/ext/fs/ops.rs @@ -294,9 +294,16 @@ where let fs = { let mut state = state.borrow_mut(); - state - .borrow_mut::<P>() - .check_write(&path, "Deno.remove()")?; + if recursive { + state + .borrow_mut::<P>() + .check_write(&path, "Deno.remove()")?; + } else { + state + .borrow_mut::<P>() + .check_write_partial(&path, "Deno.remove()")?; + } + state.borrow::<FileSystemRc>().clone() }; |