Add install preflight safeguards (T-303)
This commit is contained in:
@@ -64,6 +64,25 @@ type plannedEntry struct {
|
||||
directory bool
|
||||
}
|
||||
|
||||
func verifiedPackageFromPlan(plan []plannedEntry, entrypoint string) (VerifiedPackage, error) {
|
||||
verified := VerifiedPackage{Entrypoint: entrypoint}
|
||||
for _, entry := range plan {
|
||||
if entry.directory {
|
||||
continue
|
||||
}
|
||||
if entry.file == nil || entry.file.UncompressedSize64 > uint64(math.MaxInt64) {
|
||||
return VerifiedPackage{}, ErrExpandedTooLarge
|
||||
}
|
||||
size := int64(entry.file.UncompressedSize64)
|
||||
if verified.PayloadBytes > math.MaxInt64-size {
|
||||
return VerifiedPackage{}, ErrExpandedTooLarge
|
||||
}
|
||||
verified.PayloadBytes += size
|
||||
verified.PayloadFiles++
|
||||
}
|
||||
return verified, nil
|
||||
}
|
||||
|
||||
func NewExtractor(limits Limits) (Extractor, error) {
|
||||
if err := limits.validate(); err != nil {
|
||||
return Extractor{}, err
|
||||
|
||||
Reference in New Issue
Block a user