E.84. 版本 8.2.17

发布日期: 2010-05-17

这个版本包含各种自8.2.16以来的修复。关于8.2主版本的新特性信息, 请查看Section E.101

E.84.1. 迁移到版本 8.2.17

运行8.2.X的用户不需要转储/恢复。不过,如果你是从一个早于8.2.14的版本升级而来, 那么请查看8.2.14的版本声明。

E.84.2. 修改列表

  • 使用一个开放标记而不是使用Safe.pm应用到整个解释器, 在plperl中实施限制 (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属于超级用户。(不过,该表上的权限是没有检查的, 所以真实需要较少安全模块表的安装仍然可以赋予适当的权限给受信任的非超级用户。) 另外,阻止加载代码到无限制的"普通"Tcl解释器, 除非我们真的想要执行pltclu函数。 (CVE-2010-1170)

  • 如果在重建relcache项期间接收到一个缓存重置消息,修复可能的崩溃 (Heikki)

    这个错误是在8.2.16中修复相关的失败的时候引入的。

  • 不允许非特权的用户重置超级用户仅有的参数设置 (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)

  • 修复psql的\copy,在\copy (select ...) 的句点周围不添加空格 (Tom)

    在数值文字的小数点周围添加空格会导致语法错误。

  • 确保contrib/pgstattuple函数迅速响应取消中断 (Tatsuhito Kasahara)

  • 让服务器启动正确的处理shmget()为一个现有的共享内存段返回 EINVAL的情况 (Tom)

    这个行为已经在BSD驱动的内核上(包括OS X)观察到了。 它导致一个完全误导的启动失败抱怨:共享内存请求尺寸过大。

  • 避免Windows上系统日志处理中可能的崩溃 (Heikki)

  • 更强劲的处理Windows注册中不完整的时区信息 (Magnus)

  • 更新一组已知的Windows时区名 (Magnus)

  • 更新时区数据文件到tzdata版本2010j, 因为DST规律在Argentina、Australian Antarctic、Bangladesh、Mexico、Morocco、 Pakistan、Palestine、Russia、Syria、Tunisia发生了改变; 还为Taiwan做了历史纠正。

    另外,添加PKST (Pakistan Summer Time)到缺省的时区缩写集合。