Fix issue with call to cpptools-wordexp with invalid arguments #10070
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There are 2 issues here.
cpptools-wordexp
will (intentionally) exit with an error code. This is translated into an exception byexecFileSync
, which wasn't being caught.shell: false
(which is also the default),execFileSync
will perform shell parsing on arguments (making the invocation ofcpptools-wordexp
redundant). This appears to be a bug in node or Alpine itself. This does not occur on non-Alpine linux distros. This also causes an exception to be thrown fromexecFileSync
when the command line args contain invalid shell escaping/content.Issue 1 is fixed by catching the exception, which also works around the symptoms of 2. In both cases, the compilerPath will not be usable.
This does not address incorrect command line parsing results on Alpine, as shell parsing is occurring twice. (This only impacts when a user pastes a full command line into
compilerPath
instead of just the compiler path). This would be addressed by #9681 , as that would allow us to callwordexp
directly.