🐛 Fix missing execution permission bit in execFile override
Consider an electron application that uses `execFile` to run a script that lives within the application code base: ```coffee child_process = require 'child_process' child_process.execFile __dirname + '/script.sh', (error) -> throw error if error? ``` An application like this will fail when being packaged in an `asar` with an following error: ``` Error: spawn EACCES ``` Electron overrides certain `fs` functions to make them work within an `asar` package. In the case of `execFile`, the file to be executed is extracted from the `asar` package into a temporary file and ran from there. The problem is that during the extraction, the original permissions of the file are lost. We workaround this by: 1. Extending `asar.stat` to return whether a file is executable or not, which is information that's already saved in the `asar` header. 2. Setting execution permissions on the extracted file if the above property holds true. Fixes: https://github.com/atom/electron/issues/3512
This commit is contained in:
parent
bf5e9e4f4d
commit
585ff9062c
4 changed files with 16 additions and 0 deletions
|
@ -27,6 +27,7 @@ class Archive {
|
|||
struct FileInfo {
|
||||
FileInfo() : size(0), offset(0) {}
|
||||
bool unpacked;
|
||||
bool executable;
|
||||
uint32 size;
|
||||
uint64 offset;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue