PostgreSQL JDBC 42.3.2/42.2.25 安全更新
由 JDBC 项目发布于 2022-02-02
相关开源 安全
已为 PostgreSQL JDBC 驱动程序创建了安全公告。该驱动程序提供了基于通过 authenticationPluginClassName、sslhostnameverifier、socketFactory、sslfactory、sslpasswordcallback 连接属性提供的类名来实例化插件实例的功能。
但是,驱动程序在实例化类之前未验证该类是否实现了预期的接口。
修复方法是确保该类实现了预期的接口。这已在 42.2.25 和 42.3.2 版本中修复。此外,以下是 42.3.2 中的一些更改,完整的更改日志可以在这里找到
已更改
- 性能:在连接时读取 in_hot_standby GUC PR #2334
- 修复:如果 gssEncryption 为 prefer 或 require,我们将询问服务器是否支持 GSS 加密PR #2396,无需在询问服务器是否支持 gss 加密之前在缓存中拥有票证。
- 修复:为 #getBoolean BIT(>1) 抛出 SQLException PR #2386 当在 BIT(>1) 上调用 CallableStatement#getBoolean(int) 时,抛出 SQLException 而不是 ClassCastException。
- 性能:在连接时读取 in_hot_standby GUC PR #2334
- 添加证书密钥类型检查以选择 chooseClientAlias PR #2417
已添加
- 功能:添加 authenticationPluginClassName 选项,以便在运行时提供密码。添加了 authenticationPluginClassName 连接属性,允许最终用户指定一个类,该类将在运行时提供连接密码。实现该接口的用户必须确保该方法的每次调用都提供一个新的 char[] 数组,因为驱动程序在使用后会将内容填充为零。驱动程序内的调用站点已更新为尽可能直接使用 char[]。这包括在 GSS 身份验证代码路径中的直接使用,这些代码路径在内部已经将 String 密码转换为 char[] 以供内部使用。这允许使用必须在运行时生成或定期更改的密码配置连接。PR #2369 原始问题 Issue #2102
- 功能:添加 tcpNoDelay 选项PR #2341 修复了 Issue #2324
- 功能:pg_service.conf 和 .pgpass 支持 (jdbc:postgresql://?service=my-service) PR #2260 修复了 Issue #2278
已修复
- 在 PgStatement 和 PgResultset 中使用本地 TimestampUtil 以实现线程安全PR #2291 修复了 Issue #921 同步共享日历的修改
- 修复:PgObject isNull() 报告相反的结果 Issue #2411 PR #2414
- 修复:在 Windows 上,默认文件名为 ".pg_service.conf"(而不是 "pg_service.conf")PR #2398 修复了 Issue #2278
- 修复:如果设置了 fetchsize,则在读取后不要关闭 refcursor Issue #2227 PR #2371
- 修复:重新设计 gss 身份验证,使用主体名称来获取凭据 Issue #2235 PR #2352
- 修复:以大写形式返回 getIndexInfo 元数据列 PR #2368
- 修复:ConnectionFactoryImpl#tryConnect 中的连接泄漏 PR #2350 Issue #2351
- 修复:修复 IS_AUTOGENERATED 标志 PR #2348
- 修复:解析 Windows 的服务文件测试 PR #2347
- 修复:规范指出,对已关闭的连接调用 close() 是一个空操作。PR #2345 修复了 Issue #2300
- 修复:为在 sql TIME(6) 上调用的 getTimestamp() 添加微秒精度。当前,“当通过 resultSet.getTimestamp() 获取 TIME(6) 类型的值时,仅保留毫秒精度,微秒的小数位数会丢失。” 此更改将在 TIME(6) 上调用 .getTimestamp() 时保留微秒精度。PR #2181 关闭了 Issue #1537
- 测试:物化视图权限 PR #2209 添加和删除物化视图添加到 TestUtil 以及 DatabaseMetaData 设置和拆卸 修复了 Issue #2060
- 修复:connect.md 中的拼写错误 PR #2338
OutOfMemoryException
=> OutOfMemoryError
- 修复:在 PgStatement 和 PgResultset 中使用本地 TimestampUtil 以实现线程安全。TimestampUtil 不是线程安全的。当多个线程使用一个连接的 ResultSet 时,它会引发异常。PR #2291 修复了 Issue #921 如果 PgStatement 和 PgResultSet 使用它们自己的 TimestampUtil,则不需要同步。
- 修复:CONTRIBUTING.md 中的拼写错误PR #2332 seccion => section
PostgreSQL JDBC 团队感谢所有参与此版本的人员!
JDBC 团队