Theo de Raadt dodał zmianę, która zakazuje używania znaku z zerowym kodem w skryptach powłoki przetwarzanych przez domyślny interpreter komend ksh. Obecność symboli zerowych w skryptach będzie teraz skutkować zakończeniem wykonania z komunikatem o błędzie, z wyjątkiem sytuacji, gdy znajdują się one w danych dołączonych na końcu pliku po kodzie. Zmiana została uwzględniona w gałęzi OpenBSD-Current, na której oparty będzie wydanie OpenBSD 7.6.
Zauważono, że taka zmiana pozwoli wyeliminować niepewność zachowania związaną z przetwarzaniem znaku zerowego w kodzie napisanym w języku C, gdzie zerowy bajt jest używany do wskazywania końca łańcucha. Badanie przetwarzania znaku zerowego w różnych powłokach pokazało, że w każdej z nich wystąpił jeden lub kilka przypadków, w których zerowy bajt w danych wejściowych lub zawartości zmiennych prowadził do różniącego się zachowania w porównaniu do innych powłok; na przykład niektóre powłoki go ignorowały, inne zastępowały spacją, a niektóre kończyły dalszą analizę skryptu lub przerywały jego wykonanie.
Źródło: opennet.ru
