Kanárek je známá hodnota umístěná mezi paměť a řídicí data na zásobníku. Díky němu je možné sledovat, zda nedošlo k přetečení. Pokud by k němu došlo, kanárek je přepsán a je možné to detekovat a reagovat na to. Název kanárek vychází z použití skutečných kanárků v dolech, kteří detekovali nebezpečné plyny ve vzduchu.
Překlad "zásobníkový kanárek" ale vidím poprvé, dokonce ho vidí poprvé i google, dobrá práce.
Ta hodnota je známá pro program, nesmí být ale známá pro útočníka, pak by to nemělo význam. Chrání proti přepsání návratové adresy na konci stacku.
V gcc to je známý -fstack-protector[-all], to už zná asi více lidí.
8 bajtová hodnota v gcc se volila právě z důvodů, aby jí nemohl uhádnout. Ano, pokud jí zná, může obelstít kontrolu a způsobit právě tuhle chybu a spuštění vlastního kódu.
Neznám žádný český termín pro tohle. Používáme anglické termíny. Ne, že bych nechtěl používat české termíny, ale neznám je a ne vždy člověk kápne na správný překlap, aby se mu dalo rozumět.
Viděl jsem pár skript z ČVUT a nevypadá to, že by nová generace programátorů znala české termíny, často to je opis anglických slov.