HaxeFoundation / HaxeFoundation/hxcpp

FileStat size integer overflow

Aperta
#705 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
330
Fork
227
Merge medio
2g 16h
PR unite (30g)
18

Descrizione

`sys.FileSystem.stat(path).size` returns a negative number for a file more than 2.1 GB long

The problem is all values from `stat` are cast to 4 byte int:
`STATF(size);` [Sys.cpp#L410](https://github.com/HaxeFoundation/hxcpp/blob/master/src/hx/libs/std/Sys.cpp#L410)
`#define STATF(f) o->Add(HX_CSTRING(#f),(int)(s.st_##f))` [Sys.cpp#L369](https://github.com/HaxeFoundation/hxcpp/blob/master/src/hx/libs/std/Sys.cpp#L369)

(also mode is set twice)

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia in src/hx/libs/std/Sys.cpp, nella macro STATF intorno alle righe 369 e 410, e controlla come vengono convertiti i campi stat prima di essere aggiunti al risultato. Verifica il comportamento con un file più grande di 2.1 GB; il lavoro è completato quando size non è più negativo e mode non viene assegnato due volte.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp
Ambito
operating-systems
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.