fix file rights
This commit is contained in:
@@ -101,7 +101,7 @@ impl WasiCtxBuilder {
|
|||||||
path: impl AsRef<Path>,
|
path: impl AsRef<Path>,
|
||||||
) -> Result<&mut Self, Error> {
|
) -> Result<&mut Self, Error> {
|
||||||
let caps = DirCaps::all();
|
let caps = DirCaps::all();
|
||||||
let file_caps = FileCaps::READ | FileCaps::WRITE; // XXX more base caps
|
let file_caps = FileCaps::all();
|
||||||
self.0.table().push(Box::new(DirEntry::new(
|
self.0.table().push(Box::new(DirEntry::new(
|
||||||
caps,
|
caps,
|
||||||
file_caps,
|
file_caps,
|
||||||
|
|||||||
@@ -786,13 +786,13 @@ impl From<&FileCaps> for types::Rights {
|
|||||||
rights = rights | types::Rights::FD_ALLOCATE;
|
rights = rights | types::Rights::FD_ALLOCATE;
|
||||||
}
|
}
|
||||||
if caps.contains(&FileCaps::FILESTAT_GET) {
|
if caps.contains(&FileCaps::FILESTAT_GET) {
|
||||||
rights = rights | types::Rights::PATH_FILESTAT_GET;
|
rights = rights | types::Rights::FD_FILESTAT_GET;
|
||||||
}
|
}
|
||||||
if caps.contains(&FileCaps::FILESTAT_SET_SIZE) {
|
if caps.contains(&FileCaps::FILESTAT_SET_SIZE) {
|
||||||
rights = rights | types::Rights::PATH_FILESTAT_SET_SIZE;
|
rights = rights | types::Rights::FD_FILESTAT_SET_SIZE;
|
||||||
}
|
}
|
||||||
if caps.contains(&FileCaps::FILESTAT_SET_TIMES) {
|
if caps.contains(&FileCaps::FILESTAT_SET_TIMES) {
|
||||||
rights = rights | types::Rights::PATH_FILESTAT_SET_TIMES;
|
rights = rights | types::Rights::FD_FILESTAT_SET_TIMES;
|
||||||
}
|
}
|
||||||
rights
|
rights
|
||||||
}
|
}
|
||||||
@@ -823,16 +823,19 @@ impl From<&types::Rights> for FileCaps {
|
|||||||
if rights.contains(&types::Rights::FD_WRITE) {
|
if rights.contains(&types::Rights::FD_WRITE) {
|
||||||
caps = caps | FileCaps::WRITE;
|
caps = caps | FileCaps::WRITE;
|
||||||
}
|
}
|
||||||
|
if rights.contains(&types::Rights::FD_ADVISE) {
|
||||||
|
caps = caps | FileCaps::ADVISE;
|
||||||
|
}
|
||||||
if rights.contains(&types::Rights::FD_ALLOCATE) {
|
if rights.contains(&types::Rights::FD_ALLOCATE) {
|
||||||
caps = caps | FileCaps::ALLOCATE;
|
caps = caps | FileCaps::ALLOCATE;
|
||||||
}
|
}
|
||||||
if rights.contains(&types::Rights::PATH_FILESTAT_GET) {
|
if rights.contains(&types::Rights::FD_FILESTAT_GET) {
|
||||||
caps = caps | FileCaps::FILESTAT_GET;
|
caps = caps | FileCaps::FILESTAT_GET;
|
||||||
}
|
}
|
||||||
if rights.contains(&types::Rights::PATH_FILESTAT_SET_SIZE) {
|
if rights.contains(&types::Rights::FD_FILESTAT_SET_SIZE) {
|
||||||
caps = caps | FileCaps::FILESTAT_SET_SIZE;
|
caps = caps | FileCaps::FILESTAT_SET_SIZE;
|
||||||
}
|
}
|
||||||
if rights.contains(&types::Rights::PATH_FILESTAT_SET_TIMES) {
|
if rights.contains(&types::Rights::FD_FILESTAT_SET_TIMES) {
|
||||||
caps = caps | FileCaps::FILESTAT_SET_TIMES;
|
caps = caps | FileCaps::FILESTAT_SET_TIMES;
|
||||||
}
|
}
|
||||||
caps
|
caps
|
||||||
|
|||||||
Reference in New Issue
Block a user