PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.140. 版本 8.1.21

> 发布日期: 2010-05-17

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

## E.140.1. 迁移到版本 8.1.21

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

## E.140.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驱动的内核上，包括OS X，已经被观察到了。 它导致一个完全误导的启动失败抱怨共享内存请求尺寸太大。

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

上一页 | 起始页 | 下一页
版本 8.1.22 | 上一级 | 版本 8.1.20