**** Prislaba kontrola a prilis ukecany program ****

V tomto pripade ma program hned dve chyby:
1) Ked zadame heslo, prezradi nam, ci je jeho dlzka spravna. To nam umoznuje efektivne a
rychlo vyskusat mozne dlzky hesiel:

$ perl -e 'for $k (1..100) { print "a"x$k, "\n"; }' | ./slaba-kontrola | grep -n Zle
23:Zle heslo!

a zistit, ze dlzka hesla je 23 znakov. (ta Perlova potvora nie je nic ine ako cyklus, ktory
postupne vygeneruje jedno, dve, tri, styri, ... a-cka a skusi ich zadat; "grep" nam potom povie,
ze na ktorom riadku bolo slovo "Zle").

2) Ked sa toto heslo kontroluje, program namiesto porovnania celeho jeho obsahu kontroluje
iba prve styri znaky (na 32-bitovej platforme); kedze namiesto strlen() pouziva vo funkcii
memcmp() hodnotu sizeof(). Komentar v programe napoveda, ze tato chyba vznikla ako dosledok
zmeny definicie premennej heslo z typu char[20] na typ char*. V prvom pripade je operator
sizeof() namieste, v druhom urcite nie :-)

V kombinacii so znalostou dlzky hesla nam je takto umoznene efektivne odskusast potencialne
vsetky mozne hesla iba pomocou odskusania 2^32 (alebo mozno este aj menej) moznosti...
napriklad takymto jednoriadkovcom:

perl -e '@s=(a..z,A..Z); for $a (@s) { for $b (@s) { for $c (@s) { for $d (@s) { print "$a$b$c$d","-"x19, "\n"; } } } }' | ./slaba-kontrola | grep -v Zle

(tento skusa vsetky stvorpismenkove kombinacie nasledovane 19timi zbytocnymi znakmi, kedze
dlzka musi vzdy sediet)

Opat namet na zamyslenie: Na 64-bitovej platforme by to bolo casovo vyrazne narocnejsie
(2^64 je asi privela; ale napriklad cisto numerickych moznosti je len 10^8)
