Skip to content

Commit e326403

Browse files
committed
add more validation for lifecycle
Signed-off-by: Utkarsh Srivastava <[email protected]>
1 parent 138b236 commit e326403

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/endpoint/s3/ops/s3_put_bucket_lifecycle.js

+20
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,16 @@ async function put_bucket_lifecycle(req) {
141141
days_after_initiation: parse_lifecycle_field(rule.AbortIncompleteMultipartUpload[0].DaysAfterInitiation),
142142
}, _.isUndefined);
143143
reject_empty_field(current_rule.abort_incomplete_multipart_upload);
144+
145+
if (current_rule.abort_incomplete_multipart_upload?.days_after_initiation === undefined) {
146+
throw new S3Error(S3Error.InvalidArgument);
147+
}
148+
if (current_rule.abort_incomplete_multipart_upload?.days_after_initiation < 1) {
149+
throw new S3Error({
150+
...S3Error.InvalidArgument,
151+
detail: 'when calling the PutBucketLifecycleConfiguration operation: \'DaysAfterInitiation\' for AbortIncompleteMultipartUpload action must be a positive integer',
152+
});
153+
}
144154
}
145155

146156
if (rule.Transition?.length === 1) {
@@ -158,6 +168,16 @@ async function put_bucket_lifecycle(req) {
158168
newer_noncurrent_versions: parse_lifecycle_field(rule.NoncurrentVersionExpiration[0].NewerNoncurrentVersions),
159169
}, _.isUndefined);
160170
reject_empty_field(current_rule.noncurrent_version_expiration);
171+
172+
if (current_rule.noncurrent_version_expiration?.noncurrent_days === undefined) {
173+
throw new S3Error(S3Error.InvalidArgument);
174+
}
175+
if (current_rule.noncurrent_version_expiration?.noncurrent_days < 1) {
176+
throw new S3Error({
177+
...S3Error.InvalidArgument,
178+
detail: 'when calling the PutBucketLifecycleConfiguration operation: \'NoncurrentDays\' for NoncurrentVersionExpiration action must be a positive integer',
179+
});
180+
}
161181
}
162182

163183
if (rule.NoncurrentVersionTransition?.length === 1) {

0 commit comments

Comments
 (0)