企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.154\. 版本 7.4.29 > **发布日期:** 2010-05-17 这个版本包含各种自7.4.28以来的修复。关于7.4主版本的新特性信息, 请参阅[Section E.183](#calibre_link-305)。 PostgreSQL社区将在2010年7月份停止对7.4.X版本系列的更新。 建议用户尽快更新到最新的版本。 ## E.154.1\. 迁移到版本 7.4.29 运行7.4.X的版本不需要转储/恢复。不过,如果你是从一个早于7.4.26的版本升级而来, 那么请参阅7.4.26的版本声明。 ## E.154.2\. 修改列表 * 使用一个opmask应用到整个解释器,执行`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) * 确保`contrib/pgstattuple`函数响应迅速的取消中断 (Tatsuhito Kasahara) * 使服务器启动适当的处理`shmget()`为一个已经存在的共享内存段返回 `EINVAL`的情况 (Tom) 这个行为已经在BSD衍生的核心程序包括OS X上观察到。它导致一个完全误导的启动失败, 抱怨共享内存请求大小太大。