- Expediere
- 23 septembrie 2026 la 02:35 UTC
- Autor
- Kamo
- Comite
- d1a8762
/download încărcat întregul fișier într-un octet[] prin ImageService.download Document înainte servind-l; /bulk-download construit întregul ZIP (sau PDF fuzionat) ca un octet[] în DocumentPrepareService înainte de a răspunde; upload-uri rula până la 3 GB împotriva ~1.4 GB acest serviciu gramada, și /bulk-download 100-id capac nu a avut nici o limită de dimensiune în spatele ei cere sute de gigabytes într-o singură cerere. buildZip a scris, de asemenea, Img.fileName direct în un ZipEntry cu nici o sanitizare, astfel încât un document redenumit la ceva de genul - Nu. (FileName is user-controled /actualizarea/numele fișierului/{imgId}) a produs o arhivă a cărei intrare, deschisă de un extractor care nu se apără împotriva zip-alunecare, scrie în afara directorului țintă pe care OS face Extragere. - /download acum fluxs via MinIOStorageService.openRange + StreamingResponseBody, exact ca /stream a făcut-o deja, în loc de tamponarea întregului fișier. (Drops ImageService.download Document's DL-primul/Dl-ul-ul efect secundar de contabilitate Citeşte vreodată Img.dlFirstDate/DlLastDate, doar le scrie vreodată. Auditul separat ImgLogDownload rând prin înregistrareDownloadEveniment, care este citit înapoi de panoul istoric de descărcare, este neschimbat.) - /bulk-download dedupes a solicitat ID-uri înainte de capacul 100-id și munca per-post. - /bulk-download refuză pur și simplu (400) odată ce documentele selectate combinate Img.fileSize trece 500 MB, mai degrabă decât încercarea de fuzionare / zip și riscând un OOM refuzat, nu tăcut trunchiat, deoarece integralitatea este punctul unui export în vrac. - buildZip sanitizeaza fiecare nume de intrare pe segmentul de cale finala (splitting pe ambele / și \, deoarece extractorul poate fi pe un sistem de operare acest server nu controlează), închiderea decalajului zip-alunecare. NEDON, raportat ca un decalaj cunoscut: buildZip/mergePdf încă construiesc rezultatul lor ca un octet[] înainte de a răspunde mai degrabă decât streaming-l direct la răspunsul HTTP se leagă că la un plafon cunoscut (în jos de nemărginit), dar nu este eliminat. Conversia lor la scrie într-un apelant-supplied OutputStream ar permite /bulk-download flux prea; amânat deoarece modificări Semnăturile publice ale DocumentPrepareService, transformându-se în trei fișiere de testare existente (mănunchiuri care blochează în prezent metodele octe[]-returnare), pentru o severitate MEDIUM, deja acoperită restul Noi teste: - Nu. (7 cazuri pentru igienizarea ZipEntryName) și trei cazuri adăugat la ImagingControllerMediaAssocTest (streaming-not-buffering, id dedupe, dimensiunea capacului). Mutație verificată: revenirea ImagingController.java la starea sa pre-fixate transformă cele trei noi controler cazuri rosu; returing sanitizeZipEntryName to cazuri roșu (al șaselea, un nume de fișier obișnuit deja sigur, este corect neafectat nici un fel). Apartament complet: 741 teste verzi (a fost 731; +10 noi).
