different behaviour on fbsd and linux

Rudolf Cejka cejkar at fit.vutbr.cz
Mon Feb 20 18:01:58 CET 2006


Divacky Roman wrote (2006/02/19):
> kazdopadne to s tim argv[0] mne dostalo... v man strance je jen informace ze
> podle konvence to obsahuje a ne ze to bez toho nefunguje ;(

> doufam ze se ta informace bude nekomu hodit :) (a ze nekdo prepise tu man
> stranku s tim ze shoudl -> must)

Vetsina se uz vysvetlila, ale k manu se v teto konferenci jeste tolik
neobjevilo: Man az tak spatny neni, protoze pise, ze "arg, ..." ve volani
funkce je seznam jednoho nebo vice (tedy ne zadneho) ukazatelu na textove
retezce ukonceneho ukazatelem NULL. I slovicko "should" je v poradku,
protoze se opravdu spousteny program a arg0 shodovat nemuseji.

Pokud se tim chcete dale zabyvat, nejdrive je potreba pochopit skutecny
problem. Primo v man getopt(3) je uveden kod, ktery na svem konci vyrobi
argc = -1 a argv ukazujici na prvni promennou prostredi - uz toto se mi
moc nelibi a je otazka, jestli by opravdu nebylo rozumne sahnout do jadra
nebo libc, aby nejak nereagovaly (nebo se inspirovat u SysV). Mozna by se
mohlo jednat o branu k nejakemu pripadnemu exploitu, kdy lze programu
vnutit ponekud nestandardni vstupni podminky, ktere urcite nikdy nikdo
nekontroloval, protoze argc >= 1 je obecne brano jako axiom. /bin/ls budiz
typickou ukazkou, kde se nedostatecne testuje argc != 0, misto pouziti
mnohem korektnejsiho testu argc > 0.

> takze to zase neni az tak hrozne ne?

Zaslani shodneho prispevku do dvou konferenci soucasne byste
si ale priste mel odpustit.

-- 
Rudolf Cejka <cejkar at fit.vutbr.cz> http://www.fit.vutbr.cz/~cejkar
Brno University of Technology, Faculty of Information Technology
Bozetechova 2, 612 66  Brno, Czech Republic



More information about the Users-l mailing list