E.36. 版本 8.3.11 #
发行日期
2010-05-17
本次发布包含对 8.3.10 的多方面修复。有关 8.3 大版本中新特性的信息,请参见第 E.47 节。
E.36.1. 迁移到版本 8.3.11
对于运行 8.3.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.3.8 的版本升级,请参阅第 E.39 节。
E.36.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)修复在重建 relcache 条目期间收到缓存重置消息时可能的崩溃(Heikki)
此错误是在 8.3.10 中修复相关失败时引入的。
在为函数运行语言验证器时应用逐函数 GUC 设置(Itagaki Takahiro)
这避免了函数代码在没有该设置时无效所导致的失败;例如
search_path不正确时 SQL 函数可能无法解析。不允许非特权用户重置仅超级用户可用的参数设置(Alvaro)
此前,如果非特权用户为自己运行
ALTER USER ... RESET ALL,或为他拥有的数据库运行ALTER DATABASE ... RESET ALL,这将移除该用户或数据库的所有特殊参数设置,包括本应只可由超级用户更改的那些。现在,ALTER只移除用户有权更改的参数。避免后端关闭发生在需要向日志条目添加
CONTEXT内容时导致可能的崩溃(Tom)某些情况下上下文打印函数会失败,因为到打印日志消息时当前事务已被回滚。
确保归档进程尽快响应
archive_command的变更(Tom)为现代 Perl 版本更新 pl/perl 的
ppport.h(Andrew)修复 pl/python 中的若干内存泄漏(Andreas Freund、Tom)
防止 psql 在展开引用自身的变量时无限递归(Tom)
修复 psql 的
\copy,不在\copy (select ...)内的点周围添加空格(Tom)在数字字面量的小数点周围添加空格会导致语法错误。
修复使用
contrib/intarray操作符的不可满足查询产生不必要的 “GIN 索引不支持整索引扫描”错误(Tom)确保
contrib/pgstattuple函数及时响应取消中断(Tatsuhito Kasahara)让服务器启动正确处理
shmget()对已存在的共享内存段返回EINVAL的情形(Tom)此行为曾在包括 OS X 在内的 BSD 衍生内核上观察到。它导致完全误导性的启动失败,抱怨共享内存请求大小过大。
避免 Windows 上 syslogger 进程可能的崩溃(Heikki)
更健壮地处理 Windows 注册表中不完整的时区信息(Magnus)
更新已知 Windows 时区名称集合(Magnus)
把时区数据文件更新为 tzdata 发行版 2010j(针对阿根廷、澳大利亚南极、孟加拉、墨西哥、摩洛哥、巴基斯坦、巴勒斯坦、俄罗斯、叙利亚、突尼斯的 DST 法规变更;以及对台湾的历史修正)
另外,把
PKST(巴基斯坦夏令时)加入默认时区缩写集合。