Skip to content

fix(s3): preserve equals in signed object paths#2499

Closed
jlon wants to merge 1 commit intorustfs:mainfrom
jlon:fix-signed-get-trailing-equals-2477
Closed

fix(s3): preserve equals in signed object paths#2499
jlon wants to merge 1 commit intorustfs:mainfrom
jlon:fix-signed-get-trailing-equals-2477

Conversation

@jlon
Copy link
Copy Markdown
Contributor

@jlon jlon commented Apr 12, 2026

Type of Change

  • New Feature
  • Bug Fix
  • Documentation
  • Performance Improvement
  • Test/CI
  • Refactor
  • Other: N/A

Related Issues

Summary of Changes

  • vendor the pinned s3s dependency used by RustFS
  • preserve = in SigV4 canonical object paths so signed GET requests do not fail signature verification for valid S3 object keys
  • add an end-to-end regression test covering signed GET on a missing object whose key ends with =

Checklist

  • I have read and followed the CONTRIBUTING.md guidelines
  • Added/updated necessary tests
  • Passed make pre-commit
  • Documentation updated (if needed)
  • CI/CD passed (if applicable)

Impact

  • Breaking change (compatibility)
  • Requires doc/config/deployment update
  • Other impact: N/A

Additional Notes

Verification commands:

  • cargo fmt --all --check
  • cargo test -p e2e_test test_signed_get_nonexistent_object_with_trailing_equals_returns_nosuchkey -- --nocapture

Thank you for your contribution! Please ensure your PR follows the community standards (CODE_OF_CONDUCT.md). If this is your first contribution, review the CLA document and sign it by commenting I have read and agree to the CLA. on the PR.

Signed-off-by: 80347547 <jianglong@oppo.com>
@github-actions
Copy link
Copy Markdown
Contributor

CLA requirements are satisfied for this pull request.

@jlon
Copy link
Copy Markdown
Contributor Author

jlon commented Apr 12, 2026

Superseded by rustfs/s3s#10. The final RustFS-side PR will only bump the s3s revision and keep the regression test after the upstream fix is merged.

@jlon jlon closed this Apr 12, 2026
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.

S3 SignatureDoesNotMatch (403) instead of NoSuchKey (404) for non-existent objects with '=' in path

1 participant