Add install preflight safeguards (T-303)

This commit is contained in:
ila
2026-07-18 18:14:25 +08:00
parent 449b183ca3
commit ae3f64c407
8 changed files with 655 additions and 44 deletions
+19
View File
@@ -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