企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.104\. 版本 8.1.21 > **发布日期:** 2010-05-17 这个版本包含各种自8.1.20以来的修复。关于8.1主版本的新特性信息, 请查看[Section E.125](#calibre_link-247)。 ## E.104.1\. 迁移到版本 8.1.21 运行8.1.X的用户不需要转储/恢复。不过,如果你是从一个早于8.1.18的版本升级而来, 那么请查看8.1.18的版本声明。 ## E.104.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做了历史纠正。