Permit safe cross-run output declarations
This commit is contained in:
@@ -16,7 +16,6 @@ import (
|
||||
|
||||
"gitea.maximumdirect.net/eric/narratio/internal/adapters/storage"
|
||||
"gitea.maximumdirect.net/eric/narratio/internal/artifactpolicy"
|
||||
"gitea.maximumdirect.net/eric/narratio/internal/config"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -287,21 +286,7 @@ func remoteLocksPrefix(sessionPrefix string) (string, error) {
|
||||
}
|
||||
|
||||
func validateRemoteLockSessionPrefix(sessionPrefix string) error {
|
||||
if sessionPrefix == "" || strings.TrimSpace(sessionPrefix) != sessionPrefix || strings.Contains(sessionPrefix, `\`) || !strings.HasSuffix(sessionPrefix, "/") {
|
||||
return fmt.Errorf("session prefix %q must be a canonical relative object prefix", sessionPrefix)
|
||||
}
|
||||
withoutSlash := strings.TrimSuffix(sessionPrefix, "/")
|
||||
if err := validateRemoteObjectKey(withoutSlash); err != nil {
|
||||
return fmt.Errorf("session prefix %q: %w", sessionPrefix, err)
|
||||
}
|
||||
parts := strings.Split(withoutSlash, "/")
|
||||
if len(parts) < 4 || parts[len(parts)-4] != config.S3CampaignsSegment || parts[len(parts)-2] != config.S3SessionsSegment {
|
||||
return fmt.Errorf("session prefix %q does not identify a campaign session", sessionPrefix)
|
||||
}
|
||||
if err := ValidateSessionIdentity(parts[len(parts)-3], parts[len(parts)-1]); err != nil {
|
||||
return fmt.Errorf("session prefix %q: %w", sessionPrefix, err)
|
||||
}
|
||||
return nil
|
||||
return validateRemoteSessionPrefix(sessionPrefix)
|
||||
}
|
||||
|
||||
func remoteLockDigest(source string) string {
|
||||
|
||||
Reference in New Issue
Block a user