Wrap tempfile usage to work around Windows/Golang bug #3724
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.
This is a workaround to the introduction of GetTempPath2 in Windows. The Golang standard library switched to this API in recent Go version golang/go#56899
The GetTempPath2 API ignores the TEMP environment variable and always returns C:\Windows\SystemTemp for system level programs. This causes the os.TempDir() API to ignore our configuration of the correct temp location.
Since practically, we can not allow list the SystemTemp directory in e.g. EDR or other security products, this bug forces Velociraptor to write temp files in this common area ignoring the configuration file.
To work around this issue we wrap all calls to temporary files and ignore the os.TempDir() API completely.