HaxeFoundation / HaxeFoundation/hxcpp
FileStat size integer overflow
- 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