summaryrefslogtreecommitdiff
path: root/cli/standalone/virtual_fs.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-07-31 21:15:13 -0700
committerGitHub <noreply@github.com>2024-08-01 09:45:13 +0530
commit5bd76609f7f3116b2804f1be24320d11bc45e151 (patch)
treefba6d738e2f5c6cdd5c6962298ca6bb1b80d3d3b /cli/standalone/virtual_fs.rs
parentf57745fe2106a4d26dd2209e1b2cacb2d6430245 (diff)
feat: codesign for deno compile binaries (#24604)
Uses [sui](https://github.com/littledivy/sui) to inject metadata as a custom section in the denort binary. Metadata is stored as a Mach-O segment on macOS and PE `RT_RCDATA` resource on Windows. Fixes #11154 Fixes https://github.com/denoland/deno/issues/17753 ```cpp deno compile app.tsx # on macOS codesign --sign - ./app # on Windows signtool sign /fd SHA256 .\app.exe ``` --------- Signed-off-by: Divy Srivastava <dj.srivastava23@gmail.com>
Diffstat (limited to 'cli/standalone/virtual_fs.rs')
-rw-r--r--cli/standalone/virtual_fs.rs25
1 files changed, 16 insertions, 9 deletions
diff --git a/cli/standalone/virtual_fs.rs b/cli/standalone/virtual_fs.rs
index 0d39f8e95..c44e2227b 100644
--- a/cli/standalone/virtual_fs.rs
+++ b/cli/standalone/virtual_fs.rs
@@ -748,12 +748,12 @@ impl deno_io::fs::File for FileBackedVfsFile {
#[derive(Debug)]
pub struct FileBackedVfs {
- file: Mutex<File>,
+ file: Mutex<Vec<u8>>,
fs_root: VfsRoot,
}
impl FileBackedVfs {
- pub fn new(file: File, fs_root: VfsRoot) -> Self {
+ pub fn new(file: Vec<u8>, fs_root: VfsRoot) -> Self {
Self {
file: Mutex::new(file),
fs_root,
@@ -836,11 +836,18 @@ impl FileBackedVfs {
pos: u64,
buf: &mut [u8],
) -> std::io::Result<usize> {
- let mut fs_file = self.file.lock();
- fs_file.seek(SeekFrom::Start(
- self.fs_root.start_file_offset + file.offset + pos,
- ))?;
- fs_file.read(buf)
+ let data = self.file.lock();
+ let start = self.fs_root.start_file_offset + file.offset + pos;
+ let end = start + buf.len() as u64;
+ if end > data.len() as u64 {
+ return Err(std::io::Error::new(
+ std::io::ErrorKind::UnexpectedEof,
+ "unexpected EOF",
+ ));
+ }
+
+ buf.copy_from_slice(&data[start as usize..end as usize]);
+ Ok(buf.len())
}
pub fn dir_entry(&self, path: &Path) -> std::io::Result<&VirtualDirectory> {
@@ -1016,12 +1023,12 @@ mod test {
file.write_all(file_data).unwrap();
}
}
- let file = std::fs::File::open(&virtual_fs_file).unwrap();
let dest_path = temp_dir.path().join("dest");
+ let data = std::fs::read(&virtual_fs_file).unwrap();
(
dest_path.to_path_buf(),
FileBackedVfs::new(
- file,
+ data,
VfsRoot {
dir: root_dir,
root_path: dest_path.to_path_buf(),