[python] Buffer overflow na Win7?

slush slush na centrum.cz
Středa Červenec 14 23:00:51 CEST 2010


Ahoj,

narazil jsem prave na situaci, ktere vubec nerozumim.

Vyvijim par dni jeden projekt pro praci se soubory - na Linuxu funguje vse
OK. Dnes jsem chtel pokracovat na vyvoji na svem druhem pocitaci s
Win7 a python2.6, ale aplikace mi po spusteni misto ocekavaneho
textoveho vystupu zobrazila nekolik kB binarnich dat. Nekolik hodin
jsem stravil izolaci problemu, az jsem zjistil, ze mi na pocitaci
nefunguje ani takovyto obycejny priklad:

t = file('blabla.txt', 'a+')
t.write("Lorem ipsum dolor sit amet")
print t.read()
t.close()

Ocekaval jsem, ze se vypise prazdny retezec (vzhledem k tomu, ze se
snazim cist na konci souboru). Tento priklad ale opakovane a bez
vyjimky do konzole vypise nekolik kB binarnich dat, mezi kterymi
dokazu identifikovat napriklad jmena ostatnich souboru v aktualnim
adresari - predpokladam, ze mi python zobrazil cast surovych dat
filesystemu.

t = file('blabla.txt', 'a+')
t.write("Lorem ipsum dolor sit amet")
t.seek(0)
print t.read()
t.close()

V teto verzi jsem pridal pred read seek. Zde bych ocekaval, ze print
vypise tentyz text, ktery jsem do souboru zapsal. Skript ale vypise
vyjimku IOError: [Errno 9] Bad file descriptor

Zkousel jsem kde co - restart pocitace, zkopirovani skriptu do jine
slozky - ale nic nepomohlo a predkladane dva skripty mi proste
nefunguji. Je tady neco, co mi uniklo? Nebo se jedna opravdu o chybu v
Pythonu? Podotykam, ze tyto skripty pod pythonem 2.6 na linuxu
normalne funguji a ani ten pracovni pocitac s Win7 neprojevuje zadne
priznaky jinych problemu.

Diky za kazdy napad,
Marek


Další informace o konferenci Python