E.205. 版本 8.1.21

E.205.1. 迁移到版本 8.1.21
E.205.2. 修改列表

发布日期:. 2010-05-17

这个版本包含各种自8.1.20以来的修复。关于8.1主版本的新特性信息, 请查看第 E.226 节

E.205.1. 迁移到版本 8.1.21

运行8.1.X的用户不需要转储/恢复。不过,如果你是从一个早于8.1.18的版本升级而来, 那么请查看第 E.208 节

E.205.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是被超级用户拥有。(不过, 该表上的权限是不检查的,所以实际上需要较小安全模块的表的 安装仍然可以赋予合适的权限到受信任的非超级用户。) 另外,阻止加载代码到不受限制的普通Tcl解释器中, 除非我们真的要执行一个pltclu函数。 (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)

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

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