Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VERSION: release v0.4.0 #45

Merged
merged 2 commits into from
Jan 13, 2025
Merged

VERSION: release v0.4.0 #45

merged 2 commits into from
Jan 13, 2025

Conversation

cyphar
Copy link
Owner

@cyphar cyphar commented Jan 13, 2025

This release primarily includes a few minor breaking changes to make the
MkdirAll and SecureJoin interfaces more robust against accidental
misuse.

- SecureJoin(VFS) will now return an error if the provided root is not a
  filepath.Clean'd path.

  While it is ultimately the responsibility of the caller to ensure the
  root is a safe path to use, passing a path like /symlink/.. as a root
  would result in the SecureJoin'd path being placed in / even though
  /symlink/.. might be a different directory, and so we should more
  strongly discourage such usage.

  All major users of securejoin.SecureJoin already ensure that the paths
  they provide are safe (and this is ultimately a question of user
  error), but removing this foot-gun is probably a good idea. Of course,
  this is necessarily a breaking API change (though we expect no real
  users to be affected by it).

  Thanks to Erik Sjölund, who initially reported this issue as a
  possible security issue.

- MkdirAll and MkdirHandle now take an os.FileMode-style mode argument
  instead of a raw unix.S_*-style mode argument, which may cause
  compile-time type errors depending on how you use filepath-securejoin.
  For most users, there will be no change in behaviour aside from the
  type change (as the bottom 0o777 bits are the same in both formats,
  and most users are probably only using those bits).

  However, if you were using unix.S_ISVTX to set the sticky bit with
  MkdirAll(Handle) you will need to switch to os.ModeSticky otherwise
  you will get a runtime error with this update. In addition, the error
  message you will get from passing unix.S_ISUID and unix.S_ISGID will
  be different as they are treated as invalid bits now (note that
  previously passing said bits was also an error).

Thanks to the following contributors for helping make this release
possible:


 * Aleksa Sarai <[email protected]>
 * Erik Sjölund <[email protected]>

Signed-off-by: Aleksa Sarai <[email protected]>

Signed-off-by: Aleksa Sarai <[email protected]>
Signed-off-by: Aleksa Sarai <[email protected]>
@cyphar cyphar merged commit 54460df into main Jan 13, 2025
40 checks passed
@cyphar cyphar deleted the release-0.4 branch January 13, 2025 04:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant