Theo de Raadt fez uma alteração que proíbe o uso do caractere de código nulo em scripts shell, processados pelo interpretador de comandos padrão ksh. A presença de caracteres nulos nos scripts agora resultará na terminação da execução com uma mensagem de erro, exceto nos casos em que eles estejam entre dados anexados no final do arquivo, após o código. A alteração foi incluída na ramificação OpenBSD-Current, na qual será baseado o lançamento do OpenBSD 7.6.
Observa-se que tal alteração eliminará a incerteza de comportamento relacionada ao tratamento do caractere nulo no código escrito em C que utiliza strings, onde o byte nulo é usado para indicar o fim da string. O estudo do tratamento do caractere nulo em diferentes shells mostrou que, em cada uma delas, foi encontrado um ou mais casos em que o byte nulo nos dados de entrada ou no conteúdo das variáveis resultava em um comportamento diferente em comparação com outras shells; por exemplo, algumas shells o ignoravam, outras o substituíam por um espaço, e algumas interrompiam o parsing do script ou paravam sua execução.
Fonte: opennet.ru
