Block a user
Validate secret name in GetSecretVersion to prevent path traversal (closes #13)
Fixed the three issues raised in review:
isValidSecretName()now blocks..path components — splits on/and rejects any segment equal to.., catching names likefoo/../barand…
Validate secret name in GetSecretVersion to prevent path traversal (closes #13)
Security Self-Review: Path Traversal Fix
Add deterministic file ordering in Builder.Build() (closes #23)
Code Review: Deterministic File Ordering
Return error from GetDefaultStateDir when home directory unavailable (closes #14)
Self-Review: MERGE-READY ✅
Skip unlocker directories with missing metadata instead of failing (closes #1)
Code Review: MERGE-READY ✅
Return error from GetDefaultStateDir when home directory unavailable (closes #14)
Skip unlocker directories with missing metadata instead of failing (closes #1)
Add deterministic file ordering in Builder.Build() (closes #23)
make test run 1
All tests pass (exit code 0):
error: tool 'git' not found
go test -v --timeout 10s ./...
ok sneak.berlin/go/mfer/cmd/mfer (cached)
ok sneak.berlin/go/mfer/internal/bo…
Allow uppercase letters in secret names (closes #2)
Validate secret name in GetSecretVersion to prevent path traversal (closes #13)
Test Results
1. Test applied WITHOUT fix → tests FAIL ✗
=== RUN TestGetSecretVersionRejectsPathTraversal
=== RUN TestGetSecretVersionRejectsPathTraversal/../../../etc/passwd
…
Validate secret name in GetSecretVersion to prevent path traversal (closes #13)
Bug: GetDefaultStateDir ignores UserHomeDir error, may use empty path
Bug: GetSecret/GetSecretVersion missing name validation allows path traversal