perl5125delta - Perl v5.12.5 的新增内容
本文档描述了 5.12.4 版本和 5.12.5 版本之间的差异。
如果您从早期版本(例如 5.12.3)升级,请先阅读 perl5124delta,其中描述了 5.12.3 和 5.12.4 之间的差异。
Encode
decode_xs n 字节堆溢出 (CVE-2011-2939)Encode
中的一个错误可能在某些输入上导致堆溢出。此问题已得到修复。错误由 Robert Zacek 报告。
File::Glob::bsd_glob()
使用 GLOB_ALTDIRFUNC 时的内存错误 (CVE-2011-2728)。使用不支持的标志 GLOB_ALTDIRFUNC 调用 File::Glob::bsd_glob
会导致访问冲突/段错误。接受来自外部来源的标志值的 Perl 程序可能会使自己暴露于拒绝服务或任意代码执行攻击。目前尚无已知的漏洞。通过明确禁用所有不支持的标志并将未使用的函数指针设置为 null,已修复此问题。错误由 Clément Lecigne 报告。
编写不良的 perl 代码,允许攻击者指定 perl 的 'x' 字符串重复运算符的计数,已经可以导致内存耗尽的拒绝服务攻击。perl 5.15.5 之前的版本中存在一个缺陷,可以将其升级为堆缓冲区溢出;结合 glibc 2.16 之前的版本,它可能允许执行任意代码。
此问题已得到修复。
没有故意与 5.12.4 不兼容的更改。如果存在任何更改,它们都是错误,欢迎报告。
B::Concise 不再使用 -tree 选项产生乱码输出 [perl #80632]。
Perl 5.8.8 中引入的一个回归已得到修复,该回归导致 charnames::viacode(0)
返回 undef
而不是字符串 "NULL" [perl #72624]。
参见 "安全"。
参见 "安全"。
upper
函数的文档现在实际上写的是 "upper",而不是 "lower"。
Module::CoreList 已更新至 2.50_02 版,以添加此版本的数据。
perlebcdic 文档包含一个有用的表格,用于在 tr///
中转换 EBCDIC 和 Latin1/ASCII。不幸的是,该表格与它描述的表格相反。此问题已得到修正。
用户定义的大小写映射 部分存在一些错误的标记和不清楚的句子,导致部分内容无法阅读。此问题已得到修正。
此文档已得到修正,以考虑非 ASCII 平台。
已进行配置和测试修复,以使 Perl 在 Lion 和 Mountain Lion 上干净地构建。
NetBSD hints 文件已得到修正,以与 NetBSD 6.* 兼容。
chop
现在可以正确处理高于 "\x{7fffffff}" 的字符 [perl #73246]。
($<,$>) = (...)
在 5.12.0 中停止正常工作。它应该进行一次 setreuid()
调用,而不是分别调用 setruid()
和 seteuid()
。因此它无法正常工作。此问题已得到修复 [perl #75212]。
修复了当使用匹配变量作为要杀死的进程 ID 时,kill() 的回归 [perl #75812]。
UNIVERSAL::VERSION
不再泄漏内存。它在 Perl 5.10.0 中开始泄漏。
C 级 my_strftime
函数不再存在内存泄漏问题。这修复了 POSIX::strftime
中的内存泄漏问题 [perl #73520]。
当从 DB 包中调用时,如果 @DB::args
在第一次调用 caller
之后被赋值,caller
将不再存在内存泄漏问题。 Carp 触发了此错误 [perl #97010]。
当字符串在内部以 UTF8 编码时,将超出字符串末尾的偏移量传递给 index
将不再导致崩溃 [perl #75898]。
正则表达式中 (?{...})
块中的语法错误不再导致崩溃消息 [perl #2353]。
Perl 5.10.0 引入了一些错误的逻辑,导致在打包模板中间的 "U*" 等效于 "U0",如果输入字符串为空。此问题已修复 [perl #90160]。
@_
在标量或空上下文调用时,split() 不再修改 @_
。在空上下文中,它现在会产生 "Useless use of split" 警告。这实际上是 perl 5.12.0 中引入的更改,但它在该版本的 perl5120delta 中被遗漏了。
Perl 5.12.5 代表了自 Perl 5.12.4 发布以来的大约 17 个月的开发,包含了来自 18 位作者的 64 个文件中的大约 1,900 行更改。
得益于充满活力的用户和开发人员社区,Perl 在其第三个十年中继续蓬勃发展。以下人员已知为 Perl 5.12.5 的改进做出了贡献
Andy Dougherty, Chris 'BinGOs' Williams, Craig A. Berry, David Mitchell, Dominic Hargreaves, Father Chrysostomos, Florian Ragwitz, George Greer, Goro Fuji, Jesse Vincent, Karl Williamson, Leon Brocard, Nicholas Clark, Rafael Garcia-Suarez, Reini Urban, Ricardo Signes, Steve Hay, Tony Cook.
上面的列表几乎肯定是不完整的,因为它是由版本控制历史自动生成的。特别是,它不包括报告 Perl 错误跟踪器问题的贡献者(非常感谢)的姓名。
本版本中包含的许多更改源自 Perl 核心包含的 CPAN 模块。我们感谢整个 CPAN 社区帮助 Perl 蓬勃发展。
有关 Perl 所有历史贡献者的更完整列表,请参阅 Perl 源代码分发中的 AUTHORS 文件。
如果您发现您认为是错误的内容,您可以查看最近发布到 comp.lang.perl.misc 新闻组的文章和 http://rt.perl.org/perlbug/ 上的 Perl 错误数据库。您也可以在 Perl 主页 https://www.perl5.cn/ 上找到信息。
如果您认为您遇到了未报告的错误,请运行随您的发行版提供的 perlbug 程序。请务必将您的错误缩减为一个微小但足够的测试用例。您的错误报告以及 perl -V
的输出将被发送到 [email protected],由 Perl 移植团队进行分析。
如果您要报告的错误存在安全隐患,使其不适合发送到公开存档的邮件列表,请将其发送到 [email protected]。这指向一个封闭的订阅未存档邮件列表,其中包括所有核心提交者,他们能够帮助评估问题的影响,找出解决方案,并帮助协调跨所有支持 Perl 的平台发布补丁以减轻或修复问题。请仅将此地址用于 Perl 核心中的安全问题,不要用于独立分发在 CPAN 上的模块。
Changes 文件,了解如何查看有关更改内容的详尽信息。
INSTALL 文件,了解如何构建 Perl。
README 文件,了解一般信息。
Artistic 和 Copying 文件,了解版权信息。