E.250. 版本 8.0.3

E.250.1. 迁移到版本 8.0.3
E.250.2. 修改列表

发布日期:. 2005-05-09

这个版本包含各种自8.0.2以来的修复,包括几个安全相关的问题。 关于8.0主版本的新特性信息,请参阅第 E.253 节

E.250.1. 迁移到版本 8.0.3

运行8.0.X的用户不需要转储/恢复。不过, 它是一个处理在8.0.X系统目录的初始内容中找到的两个重要安全问题的可能的方式。 使用8.0.3的initdb的dump/initdb/reload序列将自动纠正这些问题。

较大的安全问题是内建字符设置编码转换函数可以通过未授权的用户从SQL命令中调用, 但是该函数不是设计来这样使用的,并且恶意选择参数时时不安全的。 该修复包括修改这些函数声明的参数列表,这样他们可以不再从SQL命令中调用。 (这不影响他们通过编码转换机制的正常使用。)

较小的问题是contrib/tsearch2模块创建了几个错误的声明为返回 internal的函数,而他们并不接受internal参数。 这破坏了所有使用internal参数的函数的类型安全。

强烈建议所有安装修复这些错误,通过initdb或通过遵循下面给出的手动修复程序。 该错误至少允许未授权的数据库用户崩溃他们的服务器进程, 并且可能允许未授权的用户获得数据库超级用户的权限。

如果你不希望initdb,执行7.4.8版本声明 中相同的手动修复程序。

E.250.2. 修改列表

  • 修改编码函数签名以阻止误用

  • 修改contrib/tsearch2,以避免不安全的使用INTERNAL函数结果

  • 防止record_out不正确的第二个参数

  • 修复古老的竞态条件:允许一个事务因为某些目的(如SELECT FOR UPDATE) 被看做比其他目的提交的稍早些

    这是一个极其严重的错误,因为它会导致明显的数据不一致短暂的被应用可见。

  • 修复关系扩展和VACUUM之间的竞态条件

    这理论上会导致丢失一页最近插入的数据,尽管这种情况看起来有非常小的可能性。 没有已知的情况导致超过一个断言的失败。

  • 修复TIME WITH TIME ZONE值的比较

    在使用了--enable-integer-datetimes配置开关的地方, 该比较代码是错误的。注意:如果你在TIME WITH TIME ZONE 字段上有一个索引,它将需要在安装这个更新之后REINDEX, 因为该修复纠正了字段值的排序顺序。

  • TIME WITH TIME ZONE值修复EXTRACT(EPOCH)

  • 修复INTERVAL值中负的分数秒的错误显示

    这个错误只在使用了--enable-integer-datetimes 配置开关时发生。

  • 修复pg_dump以正确的转储包含%的触发器名字

  • 更多contrib/intagg的64位修复

  • 阻止返回RECORD的函数的不正确的优化

  • 阻止在COALESCE(NULL,NULL)上的崩溃

  • 为libpq修复Borland makefile

  • timetz类型修复contrib/btree_gist (Teodor)

  • pg_ctl检查在postmaster.pid 发现的PID,看看它是否仍然是一个活动的进程

  • 修复由转储时间戳的添加引起的pg_dump/pg_restore问题

  • 修复具体可持有游标和事务提交期间触发延迟的处罚器之间的相互作用

  • 修复返回通过引用传递数据类型的SQL函数中的内存泄露