E.27. 版本 8.1.21 #
发行日期
2010-05-17
本次发布包含对 8.1.20 的多方面修复。有关 8.1 大版本中新特性的信息,请参见第 E.48 节。
E.27.1. 迁移到版本 8.1.21
对于运行 8.1.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.1.18 的版本升级,请参阅 8.1.18 的发布说明。
E.27.2. 变更
用应用于整个解释器的操作码掩码来强制
plperl中的限制,而不是使用Safe.pm(Tim Bunce、Andrew Dunstan)近期的事态发展使我们确信
Safe.pm太不安全,不能依靠它使plperl可信。此变更完全移除了对Safe.pm的使用,改为使用始终应用操作码掩码的独立解释器。此变更的良好副作用包括:现在可以在plperl中以自然的方式使用 Perl 的strict编译指令,Perl 的$a和$b变量在排序例程中按预期工作,以及函数编译显著加快。(CVE-2010-1169)防止 PL/Tcl 执行来自
pltcl_modules的不可信代码(Tom)PL/Tcl 从数据库表自动装载 Tcl 代码的特性可能被利用于特洛伊木马攻击,因为对谁能创建该表或向其中插入没有限制。此变更禁用该特性,除非
pltcl_modules由超级用户拥有。(但是,不检查该表上的权限,因此确实需要较不安全的模块表的安装仍可以向受信任的非超级用户授予适当权限。)此外,除非确实要执行pltclu函数,否则防止把代码装载到无限制的“普通”Tcl 解释器中。(CVE-2010-1170)不允许非特权用户重置仅超级用户可用的参数设置(Alvaro)
此前,如果非特权用户为自己运行
ALTER USER ... RESET ALL,或为他拥有的数据库运行ALTER DATABASE ... RESET ALL,这将移除该用户或数据库的所有特殊参数设置,包括本应只可由超级用户更改的那些。现在,ALTER只移除用户有权更改的参数。避免后端关闭发生在需要向日志条目添加
CONTEXT内容时导致可能的崩溃(Tom)某些情况下上下文打印函数会失败,因为到打印日志消息时当前事务已被回滚。
为现代 Perl 版本更新 pl/perl 的
ppport.h(Andrew)修复 pl/python 中的若干内存泄漏(Andreas Freund、Tom)
防止 psql 在展开引用自身的变量时无限递归(Tom)
确保
contrib/pgstattuple函数及时响应取消中断(Tatsuhito Kasahara)让服务器启动正确处理
shmget()对已存在的共享内存段返回EINVAL的情形(Tom)此行为曾在包括 OS X 在内的 BSD 衍生内核上观察到。它导致完全误导性的启动失败,抱怨共享内存请求大小过大。
把时区数据文件更新为 tzdata 版本 2010j for DST law changes in Argentina, Australian Antarctic, Bangladesh, Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; also historical corrections for Taiwan。