E.255. 版本 7.4.29

E.255.1. 迁移到版本 7.4.29
E.255.2. 修改列表

发布日期:. 2010-05-17

这个版本包含各种自7.4.28以来的修复。关于7.4主版本的新特性信息, 请参阅第 E.284 节

PostgreSQL社区将在2010年7月份停止对7.4.X版本系列的更新。 建议用户尽快更新到最新的版本。

E.255.1. 迁移到版本 7.4.29

运行7.4.X的版本不需要转储/恢复。不过,如果你是从一个早于7.4.26的版本升级而来, 那么请参阅第 E.258 节

E.255.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衍生的核心程序包括macOS上观察到。它导致一个完全误导的启动失败, 抱怨共享内存请求大小太大。