Potential fix for code scanning alert no. 15: Uncontrolled data used in path expression #368
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.
Potential fix for https://github.com/runfinch/finch-daemon/security/code-scanning/15
To fix the problem, the code must ensure that any directory passed to
os.RemoveAll(via the variabledir) is not controlled by the user in an unsafe manner. The preferred fix is to make sure thatdiris always located within a known temporary or controlled directory owned by the service, and to validate thatdiris not allowed to escape this safe root. This can be accomplished usingfilepath.Abs()(to resolve symlinks and produce an absolute path), andfilepath.HasPrefix()or a similar strategy to check containment. Alternatively, ifdiris expected to be only ever a temp directory created by the service in this code path, then we should enforce or verify that expectation; otherwise, the directory should not be deleted, or the operation should be aborted. The required edits are to check, right beforeos.RemoveAll(dir), thatdiris indeed a child of a safe temporary directory root (for example, the system temp directory given byos.TempDir()), and, if not, abort the operation.This may require importing appropriate path/strings utilities, such as
path/filepathandstrings, if not already imported (though in this case, they are).Suggested fixes powered by Copilot Autofix. Review carefully before merging.