E.57. 发布8.3.20

发布日期: 2012-08-17

该发布包含来自8.3.19各种修复,关于8.3主要发布中新特性信息, 参阅Section E.77

PostgreSQL社区在2013年2月为8.3.X发布系列停止发布更新。 鼓励用户尽快更新到新版本分支。

E.57.1. 迁移到版本8.3.20

运行8.3.X不需要备份/恢复。

然而,如果从8.3.17更早版本更新,参阅8.3.17发布说明。

E.57.2. 变化

  • 防止通过XML实体引用访问外部文件/URL(Noah Misch, Tom Lane)

    xml_parse()会试图获取外部文件或作为需要解决DTD和XML值中实体引用的URL, 从而使未经授权的数据库用户试图获取带有数据库服务器权限的数据。 当外部数据不会直接返回给用户的时候,它的部分可以暴露在错误信息中, 如果数据没有解析为有效的XML;并且在任何情况下检查文件存在的单纯能力可能对攻击者有用。

  • 避免通过contrib/xml2xslt_process()访问外部文件/URL(Peter Eisentraut)

    libxslt提供了通过样式表命令文件和URL读取和写入能力, 从而使未经授权的数据库用户读取和写入具有数据库服务器的权限数据。 禁用正确使用libxslt的安全选项。(CVE-2012-3488)

    此外,删除xslt_process()从外部文件/URL中获取文件和样式表。 当这是一个记录"特性"的时候,长期被视为一个坏主意。 为CVE-2012-3489的修复中断这种能力,而非耗费精力试图修复它,我们只是简单将其删除。

  • 防止过早回收利用btree索引页(Noah Misch)

    当我们允许只读事务跳过指定XID的时候,我们 引入一种可能性即一个已删除btree页可能被循环利用,而只读事务还在运行中。 这会导致不正确的索引搜索结果。发生在该字段中这种错误的可能性似乎非常低, 因为定时要求,但尽管如此它应该被修复。

  • 修复新创建或者重置序列的崩溃安全错误(Tom Lane)

    如果ALTER SEQUENCE在新创建或重置序列中被执行, 然后精确执行nextval()调用, 之后服务器崩溃,WAL重播将恢复序列到一个状态,它似乎没有nextval()被完成, 因此允许第一个序列值通过下一个nextval()调用再次被返回。 特别是,这可能表现为serial列, 因为串行列的序列的创建包括ALTER SEQUENCE OWNED BY步骤。

  • 确保backup_label文件在pg_start_backup()之后 是fsync的(Dave Kerr)

  • 回到补丁9.1改进以压缩fsync请求队列(Robert Haas)

    这提高了检查点期间性能。9.1变化已经有足够字段测试对于备份补丁是安全的。

  • 仅仅允许autovacuum通过直接阻断进程被自动取消(Tom Lane)

    原编码可能允许某些情况下不一致操作;尤其是,autovacuum在小于deadlock_timeout 宽限期后可能被取消。

  • 提高autovacuum取消的记录(Robert Haas)

  • 修复日志收集器以致于服务器启动后第一个日志循环期间log_truncate_on_rotation可以运行(Tom Lane)

  • 确保子查询的整行引用不包含任何额外的GROUP BY或者ORDER BY列(Tom Lane)

  • 不允许CHECK限制中拷贝整行引用以及CREATE TABLE中索引定义(Tom Lane)

    这种情况可以产生于具有LIKE或者INHERITSCREATE TABLE中。 拷贝的整个行变量被错误地标记为原表的行类型不是新的。 拒绝该种情况对LIKE似乎是合理的, 因为该行类型很可能之后存在分歧, 为INHERITS我们理论上允许它,带有隐含强制父表行类型; 但是这比似乎安全的备份补丁需要更多的工作。

  • 修复ARRAY(SELECT ...)子查询中内存泄露(Heikki Linnakangas, Tom Lane)

  • 修复从正则表达式中常见前缀的提取(Tom Lane)

    该代码可以通过量化括号子表达式被混淆,比如^(foo)?bar。 这可能导致搜索这种模式的不正确索引优化。

  • 正确报告contrib/xml2xslt_process()中的错误(Tom Lane)

  • 为Morocco和Tokelau中DST变化更新时区数据文件到tzdata发布2012e。