[python] Buffer overflow na Win7?

slush slush na centrum.cz
Čtvrtek Červenec 15 15:11:53 CEST 2010


Moc diky vsem za reakce, dost mi to dalo. MSDN znam, ale naposled jsem
pod Win vyvijel pred deseti lety. Ted vyvijim pod Linuxem a podporu
pro Win resim vlastne jen pro to, ze bych casem vysledek rad submitnul
do pypi. Takze se omlouvam za blbe dotazy a neznalost Win prostredi.

2010/7/15 Hynek Fabian <hynek.fabian na firma.seznam.cz>:
> 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.

Bohuzel to neni prilis efektivni, pokud mam 2GB soubor a potrebuju po
zapisu preseekovat o par byte zpet, pripadne kdyz chci zapsat jen par
byte doprostred :).

> 2) Pokud mermomoci potrebujes r/w pristup, tak je lepsi si cely soubor
> mmapnout, coz cely ten bufferovaci cirkus v libc obchazi.

Bohuzel, mmap resi pouze fyzicky pristup k disku, nejde pouzit pro
libovolny file-like object. Podporu pro velmi velke diskove soubory
(jako specialni pripad) pres mmap planuji do dalsi verze, kazdopadne
musim to nejdriv vyresit obecne tak, aby slo zapisovat/cist/seekovat s
cimkoliv, co implementuje read/write/seek/close metody...

Kazdopadne s vasi pomoci jsem to zda se vyresil, pokazde, kdyz budu
chtit seekovat a predtim jsem zapisoval, zavolam flush(). Podle
hrubych testu to vypada, ze to funguje na Linuxu i Windows bez
problemu. Ted se jeste hrozim, na co prijdu, az to pustim pod Macem
;-).

Marek


Další informace o konferenci Python