Theo de Raadt 添加了一项更改,以禁止在默认 ksh shell 处理的 shell 脚本中使用空字符。脚本中存在空字符现在将导致执行以错误结束,除非它们被放置在代码后面附加在文件末尾的数据中。该更改包含在 OpenBSD-Current 分支中,OpenBSD 7.6 版本将在此基础上形成。
注意,这样的改变将消除与以C语言编写的代码中的空字符的处理以及使用其中空字节用于指示行结束的字符串相关联的行为歧义。对各种 shell 中空字符处理的研究表明,在每种 shell 中,都存在一种或多种情况,其中输入数据或变量内容中的空字节会导致与其他 shell 不同的行为,例如,某些shell 忽略它,有些用空格替换它,有些完成对脚本的进一步解析或停止执行它。
来源: opennet.ru
