E.95. 版本 8.2.6

发布日期: 2008-01-07

这个版本包含各种自8.2.5以来的修复,包括重大安全问题的修复。关于8.2主版本的新特性信息, 请查看Section E.101

E.95.1. 迁移到版本 8.2.6

运行8.2.X的用户不需要转储/恢复。

E.95.2. 修改列表

  • 阻止索引中的函数用用户运行VACUUMANALYZE等的权限执行 (Tom)

    索引表达式和局部索引谓词中使用的函数是在制作一个新的表条目时计算的。 一直以来大家都明白,如果一个人修改了一个不可信用户的表,那么会引起特洛伊木马执行的风险。 (注意,触发器、缺省、检查约束等,引起相同类型的风险。)但是索引中的函数会引起额外的风险, 因为它们将被日常维护操作执行,比如VACUUM FULL,它们通常自动在超级用户账户下执行。 例如,一个不法用户可以通过设置一个特洛伊木马索引定义并等待下一个日常清理, 用超级用户的权限执行代码。该修复安排标准的维护操作(包括VACUUMANALYZEREINDEXCLUSTER)作为表所有者执行而不是作为调用用户执行, 使用早已为SECURITY DEFINER函数使用的相同的权限切换机制。 为了阻止绕开这个安全错误,SET SESSION AUTHORIZATIONSET ROLE 现在禁止在SECURITY DEFINER内容中执行。 (CVE-2007-6600)

  • 修复正则表达式包中的各种错误 (Tom, Will Drewry)

    适当配置的正则表达式模式会导致崩溃、无限或接近无限循环和/或大量的内存消耗, 所有这些对于从受信任的源接受正则搜索模式的应用来说都会引起服务拒绝的危害。 (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)

  • 要求使用/contrib/dblink的非超级用户只使用口令认证,作为一个安全措施 (Joe)

    出现在8.2.5中的该修复是不完整的,因为它只为一些dblink函数堵住了漏洞。 (CVE-2007-6601, CVE-2007-3278)

  • 为GIN索引修复WAL重放中的错误 (Teodor)

  • 修复maintenance_work_mem是4GB或更多时,GIN索引建立正确的工作 (Tom)

  • 更新时区数据文件到tzdata版本2007k(特别的,最近的阿根廷的变化) (Tom)

  • 改善规划器在非C环境中对LIKE/regex估计的处理 (Tom)

  • 为深层外连接嵌套修复规划速度问题,和可能的连接顺序的贫乏的选择 (Tom)

  • 修复WHERE false AND var IN (SELECT ...)的一些情况行中的规划器失败 (Tom)

  • CREATE TABLE ... SERIALALTER SEQUENCE ... OWNED BY 不要改变序列的currval()状态 (Tom)

  • 保存ALTER TABLE ... ALTER COLUMN TYPE重建的索引的表空间和存储参数 (Tom)

  • 让归档恢复总是开始一个新的WAL时间线,而不是只在使用恢复停止时间时开始新的时间线 (Simon)

    这避免了尝试重写一个最后WAL段的现有归档拷贝的极端情况风险, 并且看起来比原先的定义更简单和干净。

  • VACUUM在表非常小而没什么用处时,不使用所有的 maintenance_work_mem (Alvaro)

  • 修复使用一个多字节数据库编码时,translate()中潜在的崩溃 (Tom)

  • corr()为负的关联值返回正确的结果 (Neil)

  • 为超过68年的间隔修复extract(epoch from interval)中的溢出 (Tom)

  • 修复PL/Perl,当在一个信任的函数中使用UTF-8正则表达式时不要失败 (Andrew)

  • 修复PL/Perl,以处理平台的Perl定义类型boolint 而不是char的情况 (Tom)

    虽然理论上这可能在任何地方发生,但是没有标准的Perl建立这样做…… 直到Mac OS X 10.5。

  • 修复PL/Python,使其与Python 2.5在64位的机器上正确的工作 (Marko Kreen)

  • 修复PL/Python,在长的意外消息上不要崩溃 (Alvaro)

  • 修复pg_dump,正确的处理缺省表达式与它们的父表不同的继承子表 (Tom)

  • 修复PGPASSFILE引用的文件不是一个纯文件时libpq的崩溃 (Martin Pitt)

  • ecpg解析器修复 (Michael)

  • contrib/pgcrypto防御OpenSSL库在键长于128位时失败; 这至少是在一些Solaris版本上的情况 (Marko Kreen)

  • contrib/tablefunccrosstab()处理NULL rowid为它本身的类别, 而不是崩溃 (Joe)

  • 修复tsvectortsquery输出例程,以正确的逃逸反斜杠 (Teodor, Bruce)

  • 修复to_tsvector()在大的输入字符串上的崩溃 (Teodor)

  • 在重新生成configure脚本时,要求使用一个特定的Autoconf版本 (Peter)

    这只影响开发者和打包者。做这个修改是为了阻止意外的使用未经测试的Autoconf 和PostgreSQL版本的组合。如果你真的想要使用一个不同的 Autoconf版本,你可以删除版本校验,但是结果如何就是你的责任了。

  • 更新gettimeofday配置检查,这样PostgreSQL 可以在更新的MinGW版本上建立 (Magnus)