Hlavní navigace

Názor ke zprávičce Optimalizace v GCC vytvořila bezpečnostní díru v jádře od kvr kvr - To gcc do něj nehrabe, ten původní kód...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 20. 7. 2009 13:13

    kvr kvr

    To gcc do něj nehrabe, ten původní kód je napsaný tak, že nejdřív ze struktury čte data a potom teprv testuje, zda ta struktura není NULL. Na základě toho (úspěšného, viz * níže) čtení gcc usoudí, že struktura NULL být nemůže (když se z ní dříve úspěšně četlo) a test na str == NULL úplně vyhodí.

    Takže i výše zmíněný kód gcc zpracuje korektně, bo nemůže tušit, co v tom „s“ vlastně bude. Kdyby předtím bylo ještě a = *s, tak rovněž část kódu za if (!s) vyhodí (pominu-li to, že s by měl být ptrdiff_t, takže by kód bylo třeba výrazně upravit).

    • – za normálních okolností by spadnul, v tomto případě si exploit předtím na adresu 0×0 namapuje validní stránku.

    Není to frajeřina, je to prostě jen chyba při vývoji.