summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/ffi/call.rs4
-rw-r--r--ext/ffi/callback.rs2
-rw-r--r--ext/ffi/dlfcn.rs2
-rw-r--r--ext/ffi/lib.rs2
-rw-r--r--ext/ffi/repr.rs40
-rw-r--r--ext/fs/lib.rs14
-rw-r--r--ext/fs/ops.rs13
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()
};