Odpověď na názor

Odpovídáte na názor k článku Rust v jádře má první zranitelnost. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • 19. 12. 2025 13:39

    Kuba Beránek

    Troufám si tvrdit, že neblábolím, jen se snažím věci uvádět na pravou míru :) Netvrdím, že v Rustu nemůže být UB, pokud se použije unsafe, tak tam samozřejmě UB být může. To důležité není, že bug v unsafe kódu může způsobit UB, to je jasné, ale že bug v safe části (opakuji v safe části, ne nic co používá unsafe blok) NEMŮŽE způsobit UB, to je ta celá pointa.

    Rozumím poznámce, že oprava byla v safe části, ale to nic nemění na tom, kde byl ten bug. Když je bug na místě A, tak ho můžu opravit na místě A, nebo ho můžu opravit i tak, že změním místo B, a tím mi zmízí bug z místa A. To nic nemění na tom, že abych našel, co *způsobuje* UB, tak k tomu může dojít pouze v unsafe částech kódu. Tady opravdu k bugu došlo v unsafe části kódu, což je to, co jsem tvrdil, i když ten problém, co způsoboval rozbití invariantu, byl jinde v kódu, a byl v safe kódu, ale to není až tak extra důležité.

    Taky bych řekl, že vlastně tímhle fixem nic moc neopravili. Stejný bug může kdykoliv vzniknout v budoucnu, pokud jinde v kódu budou zase něco dělat paralelně nad tou datovou strukturou. Ideálně by to API mělo být navržené tak, aby tam tenhle unsafe blok být nemusel, a aby to nešlo použít špatně. Ne vždycky to jde - tohle možná bude jeden případ, kdy to nejde, a v tu chvíli tam budou vznikat další a další zranitelnosti i v budoucnu, dokud někdo neudělá lepší API, a tím pádem tenhle konkrétní kus kódu nebude v bezpečnosti o moc lepší, než C nebo C++. Na tom nic nepopírám :)