В OpenBSD запретили использование нулевых символов в Shell-скриптах

Тэо де Раадт (Theo de Raadt) добавил в ветку OpenBSD-Current, на базе которой будет сформирован релиз OpenBSD 7.6, изменение, запрещающее использование символа с нулевым кодом в shell-скриптах, обрабатываемых командным интерпретатором ksh, используемым в OpenBSD по умолчанию. Наличие нулевых символов в скриптах теперь будет приводить к завершению выполнения с выводом ошибки, за исключением из размещения среди данных в конце файла, прикреплённых после кода.

Отмечается, что подобное изменение позволит исключить неопределённость поведения, связанную с обработкой нулевого символа в коде, написанном на языке Си и использующем строки, нулевой байт в которых задействован для индикации конца строки. Изучение обработки нулевого символа в различных оболочках показало, что в каждой из них было выявлен один или несколько случаев, когда нулевой байт во входных данных или содержимом переменных приводил к отличающемуся от других оболочек поведению, например, некоторые оболочки игнорировали его, некоторые заменяли на пробел, а некоторые завершали дальнейший разбор скрипта или прекращали его выполнение.

Release. Ссылка here.