pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
psqlODBC 团队发布了 PostgreSQL 官方 ODBC 驱动 psqlODBC 18.00.0005。本版本修复了一个安全漏洞和两个缺陷,建议所有用户升级。
CVE-2026-109448:绑定超过 32767 个参数时发生堆内存损坏
psqlODBC 使用有符号 16 位字段保存语句绑定的参数数量。当应用为一条语句绑定超过 32768 个参数时,驱动会在存放参数绑定信息的内存之外写入零值。应用可能崩溃,也可能带着损坏的内存继续运行。如果应用允许不可信输入决定绑定参数的数量,例如根据用户提交的值构造 IN (?, ?, ...) 列表,就会暴露于此问题。
现在,SQLBindParameter 会拒绝大于 32767 的参数编号,并返回 SQLSTATE 07009。由于 SQLNumParams 和 SQL_DESC_COUNT 都是 16 位值,ODBC 无法报告超过 32767 个参数。此前的版本也无法执行包含超过 32767 个参数的语句,因此这项变更不会破坏此前正常运行的应用。
如果暂时无法升级,请限制应用根据外部输入生成的参数数量,或将很长的值列表作为单个数组参数传入,例如使用 = ANY(?)。
psqlODBC 团队感谢 Richard Kuesters 报告此问题。
详情参阅安全公告 GHSA-cmfx-rm3r-p2jr。
type "timestam" does not exist 等错误。从第 1000 个参数开始,驱动会截断每个参数后面的类型名称,以适应固定大小的缓冲区。bytea 参数时,例如从 ADO 调用,会出现“Type is invalid”错误。Windows 软件包现在使用 OpenSSL 3.5.9 构建。
x86、x64 和 ARM64 的 Windows 安装程序及合并模块可从 PostgreSQL 下载站和 GitHub 发布页获取。源代码位于 GitHub。
完整变更列表见发布说明。
请通过 psqlODBC 问题跟踪器或 pgsql-odbc 邮件列表报告缺陷。