[python] Buffer overflow na Win7?

Hynek Fabian hynek.fabian na firma.seznam.cz
Čtvrtek Červenec 15 14:22:45 CEST 2010


slush (čtvrtek 15 Červenec 2010 11:35:04):
> Funguje. Musim rict "bohuzel", protoze duvodu, proc by melo zapnute
> bufferovani preskakovat EOF nerozumim. 
Protoze nectes stranku primo od kernelu, ale jen nejaky buffer udrzovany libc?
Urcite s tim bude mit souvislost w+/a+ rezim - AFAIK ma tohle svoje vlastni 
problemy s konkurencnim pristupem ktery by s tim mohly souviset.

> Taky nevidim souvislost, proc
> problem resi preseekovani na aktualni pozici.
Protoze to vysype buffer, takze pozice kterou ma kernel ve file deskriptoru 
odpovida tomu co ma libc. Samozrejme by slo po kazdy operaci volat flush(), 
ale tim by tak nejak zmizel duvod vubec bufferovani pouzivat :-)

> Budu muset jeste
> popremyslet, ktery hack je mensi zlo.
1) Nepouzivat w+ ale presypavat data z jednoho fd do druheho, a pak udelat 
rename(). Jako bonus mas bezpecny fallback, kdyz se neco pos..., smazes novy 
soubor a mas nezpracovany, ale aspon konzistentni data.
2) Pokud mermomoci potrebujes r/w pristup, tak je lepsi si cely soubor 
mmapnout, coz cely ten bufferovaci cirkus v libc obchazi.


Další informace o konferenci Python