postgresql-16 (16.15-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2153489)

    + A dump/restore is not required for those running 16.X.

    + However, the first three security entries below describe configuration
      adjustments and data cleanups that you may need to make after updating.

    + Also, if you use contrib/btree_gist or contrib/ltree, you may need to
      reindex indexes made with those extensions; see the relevant entries
      below.

    + Also, if you are upgrading from a version earlier than 16.10, see those
      release notes as well please.

    + Restrict logical decoding output plugins to the set specified by a new
      server parameter output_plugin_libraries

      Previously, a replication user could select any loadable library for
      logical decoding, allowing exploits of various sorts. To allow locking
      this down without breaking setups that worked before, introduce a
      whitelist of allowed output plugins.

      By default, only the output plugins shipped as part of PostgreSQL
      (pgoutput and test_decoding) are included in output_plugin_libraries.
      Installations that rely on other output plugins must add them after
      updating the server. (CVE-2026-6471)

    + Fix contrib/pgcrypto's PGP encryption to detect unsupported ciphers

      Previously, if OpenSSL rejected the requested cipher (for example,
      because it is running in FIPS mode, or the legacy provider hasn't been
      loaded), pgcrypto failed to notice the failure and simply XOR'd the
      non-encrypted block with the plaintext, rendering the “encryption”
      trivially breakable. This will typically occur with deprecated or
      non-FIPS cipher algorithms (cipher-algo=blowfish/bf, twofish, cast5, or
      3des).

      By default, pgcrypto will now fail to decrypt any messages that were
      affected in this way. To allow retrieval of such data, a new option
      ignore-cipher-failure has been added to pgp_pub_decrypt() and
      pgp_sym_decrypt(). Setting ignore-cipher-failure=1 will restore their
      previous behavior, allowing the faulty encryption wrapper to be stripped
      off:

      Once the affected messages are identified and stripped of their
      wrappers, they can then be re-encrypted with a modern algorithm. It is
      important however that the behavior of OpenSSL be the same as it was
      when the faulty messages were created: if the set of unsupported
      algorithms is not the same, this approach will not work. See the
      documentation for ignore-cipher-failure. (CVE-2026-14663)

    + Fix psql to skip in-line data following a scripted COPY ... FROM STDIN
      command, even if the COPY fails before sending PGRES_COPY_IN

      Previously, if a COPY command failed at startup (for instance, because
      the target table doesn't exist) psql would not realize that and would
      proceed to read the following in-line data as SQL commands. In the best
      case that's wrong and in the worst case it's a SQL-injection hazard.
      Teach psql to recognize syntactically-valid COPY ... FROM STDIN commands
      and to skip data on its own authority if the server doesn't respond with
      PGRES_COPY_IN.

      While this fix is unlikely to affect any production SQL scripts, test
      scripts might intentionally exercise failing COPY ... FROM STDIN
      commands. Those will need to gain a \. data terminator line after each
      such command. (CVE-2026-6464)

    + Cross-check the output row type of a portal running EXECUTE or FETCH

      EXECUTE and FETCH use two portals: an outer one for the statement
      itself, and an inner one running the query being executed on its behalf.
      It was previously possible to make the declared row types of the two
      portals diverge, leading to server memory disclosure and arbitrary code
      execution. (CVE-2026-16239)

    + Fix buffer overrun with long time zone abbreviation in to_char()

      This can easily crash the server, and exploits leading to arbitrary code
      execution have been reported. (CVE-2026-14669)

    + Fix buffer overrun in regexp match/split functions

      If passed invalidly-encoded data, these functions could write past the
      end of their conversion buffer. (CVE-2026-14664)

    + Harden the ascii() function against invalid input

      By supplying invalidly-encoded input, this function could be coaxed to
      read and return a few bytes of data that it shouldn't. In assert-enabled
      builds, its assertions could be triggered too. (CVE-2026-18024)

    + Fix multirange type handling in pg_restore_attribute_stats()

      pg_restore_attribute_stats() treated multirange types just like their
      underlying range type. This works correctly for the bounds histogram,
      but it was wrong for all the other statistics kinds. (CVE-2026-16238)

    + Make scalarineqsel() check that a constant it expects to be of type tid
      actually is

      This expectation will hold for all the built-in operators that use this
      estimator, but a maliciously-constructed operator could violate it,
      leading to a crash or server memory disclosure. (CVE-2026-14668)

    + Harden tsvector and tsquery code against overly long values (both
      individual lexemes and total vector/query length)

      The documented limits were not enforced in all code paths.
      (CVE-2026-14662)

    + Fix various places that mistakenly assumed they would not have to deal
      with more than FUNC_MAX_ARGS function arguments

      Notably, the server's actual limit on the number of arguments to an
      aggregate function is FUNC_MAX_ARGS - 1, but the parser failed to
      enforce that, creating hazards downstream. (CVE-2026-14679)

    + Reject calls from SQL to functions that take or return type internal

      The existing defenses against doing this have been shown to be
      insufficient, so add more explicit checks. (CVE-2026-14680)

    + Preserve the ownership of extended statistics objects when they are
      rebuilt by ALTER TABLE

      Previously, the role running ALTER TABLE gained ownership of such
      objects, but that seems inappropriate. (CVE-2026-6469)

    + When deparsing an EXTRACT() function call, quote the field name if
      needed

      The parser accepts any string literal as a field name in EXTRACT(),
      deferring validation to execution. If the call is stored and deparsed
      (for example during pg_dump), the string body was regurgitated verbatim,
      allowing SQL injection. (CVE-2026-15741)

    + Check for USAGE privilege on data types in places that formerly failed
      to check that

      CREATE TYPE AS RANGE did not check, nor did ALTER TABLE OF, nor did
      commands that create stored expressions. These omissions allowed roles
      without USAGE privilege to nonetheless create objects depending on the
      type, possibly blocking the type's owner from changing the type later.
      (CVE-2026-6470)

    + Invalidate role-dependent cached plans after role changes

      Role membership, role attribute, and database ownership changes may
      impact the expected behavior of row-level security policies, but
      previously we'd continue to use cached plans that were made according to
      the old state of affairs. (CVE-2026-14666)

    + Reject GSSEncRequest after direct SSL connection

      After establishing a TLS-encrypted connection, the server would still
      accept a request for GSSAPI encryption. If that succeeded, the
      connection would proceed using TLS encryption, but it would look like a
      GSS connection to the pg_hba rules. Thus, a pg_hba policy intending to
      disallow TLS would not be enforced correctly. (CVE-2026-14681)

    + Make mock SCRAM authentication secrets more plausible

      If a SCRAM login is attempted against a role that doesn't exist or
      doesn't have a SCRAM secret, we generate a mock secret and carry out the
      authentication handshake anyway, to avoid revealing these facts to an
      attacker. But the mock secret was made with a fixed iteration count,
      which in itself can be an observable response discrepancy. Use the
      configuration setting scram_iterations instead, to make the mock secret
      look more like the installation's real secrets. (CVE-2026-14672)

    + Fix out-of-bounds writes in ecpg applications caused by invalid bytea
      data received from the server

      ecpg assumed without checking that any bytea value must begin with \x. A
      broken or malicious server might send a string shorter than 2 bytes,
      resulting in memory clobber in the application. (CVE-2026-16241)

    + Do not do backquote expansion on the argument of psql's \unrestrict
      command

      This oversight in the fix for CVE-2025-8714 allows a malicious server to
      inject shell commands into plain-text dump output that will be run at
      restore time on the machine running psql, the exact scenario that
      CVE-2025-8714 intended to prevent. (CVE-2026-18408)

    + Remove pg_dump's assumption that pg_proc.protrftypes cannot have more
      than FUNC_MAX_ARGS entries

      Since there could be entries for both input and output arguments, it's
      feasible for this array's length to exceed FUNC_MAX_ARGS (which
      constrains only input arguments). Even if that were not so, pg_dump
      cannot assume that the server was built with the same value of
      FUNC_MAX_ARGS that it has. An overrun would lead to a memory clobber
      inside pg_dump. (CVE-2026-19385)

    + Harden PL/Perl against “tied” Perl arrays and hashes

      A tied object that doesn't behave like a regular one could lead to
      memory overwrite, or to constructing a corrupt result array (which would
      likely cause problems later). (CVE-2026-14670)

    + Fix integer overflows in memory-allocation calculations in PL/Perl and
      PL/Tcl

      This is the same type of problem as CVE-2026-6473, just in a different
      part of the code, and is fixed in the same way. (CVE-2026-14677)

    + Ensure that contrib/amcheck functions restrict search_path before
      executing index expressions

      Because amcheck will run such index expressions as the owner of their
      tables, a caller could potentially hijack search_path-dependent
      functions to run arbitrary code as the table owner. By default this is
      not a vulnerability because only superusers are allowed to call amcheck
      functions; but if that privilege was granted out, it created a larger
      hazard than the documentation suggests. (CVE-2026-14673)

    + Fix integer overflows in contrib/fuzzystrmatch's levenshtein() and
      levenshtein_less_equal() functions

      Passing large cost values to these functions could cause integer
      overflows, thereby producing nonsensical results, and even causing
      out-of-bounds writes in some cases. (CVE-2026-15742)

    + Fix buffer overrun in contrib/pg_stat_statements

      Query normalization didn't accurately account for the amount of space
      the normalized string would require. (CVE-2026-14676)

    + Fix datatype error in contrib/pg_trgm's GiST picksplit function

      This mistake resulted in reading past the end of the buffer, typically
      causing bad split decisions; but a crash could ensue if you're very
      unlucky. (CVE-2026-14678)

    + Remove the plan cache in contrib/refint

      This caching behavior has several serious bugs, notably that
      check_foreign_key() embeds the new key values in its cascade-UPDATE
      queries, so a cached plan reuses the originally-needed values rather
      than the key values that should be used. The simplest solution is to
      remove it. (CVE-2026-14671)

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-15.html.

  * d/postgresql-16.NEWS: update NEWS file.

  * d/p/extension_destdir: refresh patch.

 -- Guilherme Puida Moreira <guilherme.moreira@canonical.com>  Thu, 13 Aug 2026 16:12:43 -0300

postgresql-16 (16.14-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2152636).

    + A dump/restore is not required for those running 16.X.

    + However, if you are upgrading from a version earlier than 16.10, see
      those release notes as well please.

    + Prevent unbounded recursion while processing startup packets

      A malicious client could crash the connected backend by alternating
      rejected SSL and GSS encryption requests indefinitely.

      The PostgreSQL Project thanks Calif.io (in collaboration with Claude and
      Anthropic Research) for reporting this problem. (CVE-2026-6479)

    + Fix assorted integer overflows in memory-allocation calculations

      Various places were incautious about the possibility of integer overflow
      in calculations of how much memory to allocate. Overflow would lead to
      allocating a too-small buffer which the caller would then write past the
      end of. This would at least trigger server crashes, and probably could
      be exploited for arbitrary code execution. In many but by no means all
      cases, the hazard exists only in 32-bit builds. (CVE-2026-6473)

    + Properly quote object names in logical replication origin checks

      ALTER SUBSCRIPTION ... REFRESH PUBLICATION interpolated schema and
      relation names into SQL commands without quoting them, allowing
      execution of arbitrary SQL on the publisher. (CVE-2026-6638)

    + Reject over-length options in ts_headline()

      The StartSel, StopSel and FragmentDelimiter strings must not exceed 32Kb
      in length, but this was not checked for. An over-length value would
      typically crash the server. (CVE-2026-6473)

    + Guard against malicious time zone names in timeofday() and pg_strftime()

      A crafted time zone setting could pass % sequences to snprintf(),
      potentially causing crashes or disclosure of server memory. Another path
      to similar results was to overflow the limited-size output buffer used
      by pg_strftime(). (CVE-2026-6474)

    + When creating a multirange type, ensure the user has CREATE privilege on
      the schema specified for the multirange type

      The multirange type can be put into a different schema than its parent
      range type, but we neglected to apply the required privilege check when
      doing so. (CVE-2026-6472)

    + Use timing-safe string comparisons in authentication code

    + Use timingsafe_bcmp() instead of memcpy() or strcmp() when checking
      passwords, hashes, etc. It is not known whether the data dependency of
      those functions is usefully exploitable in any of these places, but in
      the interests of safety, replace them. (CVE-2026-6478)

    + Mark PQfn() as unsafe, and avoid using it within libpq

      For a non-integral result type, PQfn() is not passed the size of the
      output buffer, so it cannot check that the data returned by the server
      will fit. A malicious server could therefore overwrite client memory.
      This is unfixable without an API change, so mark the function as
      deprecated. Internally to libpq, use a variant version that can apply
      the missing check. (CVE-2026-6477)

    + Prevent path traversal in pg_basebackup and pg_rewind

      These applications failed to validate output file paths read from their
      input, so that a malicious source could overwrite any file writable by
      these applications. Constrain where data can be written by rejecting
      paths that are absolute or contain parent-directory references.
      (CVE-2026-6475)

    + Guard against field overflow within contrib/intarray's query_int type
      and contrib/ltree's ltxtquery type

      Parsing of these query structures did not check for overflow of 16-bit
      fields, so that construction of an invalid query tree was possible. This
      can crash the server when executing the query. (CVE-2026-6473)

    + Guard against overly long values of contrib/ltree's lquery type

      Values with more than 64K items caused internal overflows, potentially
      resulting in stack smashes or wrong answers. (CVE-2026-6473)

    + Prevent SQL injection and buffer overruns in contrib/spi

      check_foreign_key() was insufficiently careful about quoting key values,
      and also used fixed-length buffers for constructing queries. While this
      module is only meant as example code, it still shouldn't contain such
      dangerous errors. (CVE-2026-6637)

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-14.html.

  * d/postgresql-16.NEWS: update NEWS file.

 -- Athos Ribeiro <athos@ubuntu.com>  Fri, 15 May 2026 09:22:56 -0300

postgresql-16 (16.13-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2127668).

    + This release encompasses changes from upstream's 16.12 and 16.13
      releases. The former contains fixes for 4 CVEs (among other things), and
      the latter was a hotfix for regressions introcuced in 16.12.

    + A dump/restore is not required for those running 16.X.

    + However, if you are upgrading from a version earlier than 16.10, see
      those release notes as well please.

    + Guard against unexpected dimensions of oidvector/int2vector (Tom Lane)

      These data types are expected to be 1-dimensional arrays containing no
      nulls, but there are cast pathways that permit violating those
      expectations. Add checks to some functions that were depending on those
      expectations without verifying them, and could misbehave in consequence.
      (CVE-2026-2003)

    + Harden selectivity estimators against being attached to operators that
      accept unexpected data types (Tom Lane)

      contrib/intarray contained a selectivity estimation function that could
      be abused for arbitrary code execution, because it did not check that
      its input was of the expected data type. Third-party extensions should
      check for similar hazards and add defenses using the technique intarray
      now uses. Since such extension fixes will take time, we now require
      superuser privilege to attach a non-built-in selectivity estimator to an
      operator. (CVE-2026-2004)

    + Fix buffer overrun in contrib/pgcrypto's PGP decryption functions
      (Michael Paquier)

      Decrypting a crafted message with an overlength session key caused a
      buffer overrun, with consequences as bad as arbitrary code execution.
      (CVE-2026-2005)

    + Fix inadequate validation of multibyte character lengths (Thomas Munro,
      Noah Misch)

      Assorted bugs allowed an attacker able to issue crafted SQL to overrun
      string buffers, with consequences as bad as arbitrary code execution.
      After these fixes, applications may observe “invalid byte sequence for
      encoding” errors when string functions process invalid text that has
      been stored in the database. (CVE-2026-2006)

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-12.html and
      https://www.postgresql.org/docs/16/release-16-13.html.

  * d/postgresql-16.NEWS: Update.

 -- Athos Ribeiro <athos@ubuntu.com>  Wed, 25 Feb 2026 11:12:24 -0300

postgresql-16 (16.11-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2127667).

    + A dump/restore is not required for those running 16.X.

    + However, if you are upgrading from a version earlier than 16.10, see
      those release notes as well please.

    + Check for CREATE privileges on the schema in CREATE STATISTICS (Jelte
      Fennema-Nio)

      This omission allowed table owners to create statistics in any schema,
      potentially leading to unexpected naming conflicts. (CVE-2025-12817)

    + Avoid integer overflow in allocation-size calculations within libpq
      (Jacob Champion)

      Several places in libpq were not sufficiently careful about computing
      the required size of a memory allocation. Sufficiently large inputs
      could cause integer overflow, resulting in an undersized buffer, which
      would then lead to writing past the end of the buffer. (CVE-2025-12818)

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-11.html.

  * d/postgresql-16.NEWS: Update NEWS file.

 -- Athos Ribeiro <athos@ubuntu.com>  Mon, 24 Nov 2025 09:58:56 -0300

postgresql-16 (16.10-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2112531).

    + A dump/restore is not required for those running 16.X.

    + However, if you have any BRIN numeric_minmax_multi_ops indexes, it is
      advisable to reindex them after updating. Keep reading for further
      information.

    + Also, if you are upgrading from a version earlier than 16.9, see those
      release notes as well please.

    + Tighten security checks in planner estimation functions (Dean Rasheed)

      The fix for CVE-2017-7484, plus followup fixes, intended to prevent
      leaky functions from being applied to statistics data for columns that
      the calling user does not have permission to read. Two gaps in that
      protection have been found. One gap applies to partitioning and
      inheritance hierarchies where RLS policies on the tables should restrict
      access to statistics data, but did not.

      The other gap applies to cases where the query accesses a table via a
      view, and the view owner has permissions to read the underlying table
      but the calling user does not have permissions on the view. The view
      owner's permissions satisfied the security checks, and the leaky
      function would get applied to the underlying table's statistics before
      we check the calling user's permissions on the view. This has been fixed
      by making security checks on views occur at the start of planning. That
      might cause permissions failures to occur earlier than before.
      (CVE-2025-8713)

    + Prevent pg_dump scripts from being used to attack the user running the
      restore (Nathan Bossart)

      Since dump/restore operations typically involve running SQL commands as
      superuser, the target database installation must trust the source
      server. However, it does not follow that the operating system user who
      executes psql to perform the restore should have to trust the source
      server. The risk here is that an attacker who has gained superuser-level
      control over the source server might be able to cause it to emit text
      that would be interpreted as psql meta-commands. That would provide
      shell-level access to the restoring user's own account, independently of
      access to the target database.

      To provide a positive guarantee that this can't happen, extend psql with
      a \restrict command that prevents execution of further meta-commands,
      and teach pg_dump to issue that before any data coming from the source
      server. (CVE-2025-8714)

    + Convert newlines to spaces in names included in comments in pg_dump
      output (Noah Misch)

      Object names containing newlines offered the ability to inject arbitrary
      SQL commands into the output script. (Without the preceding fix,
      injection of psql meta-commands would also be possible this way.)
      CVE-2012-0868 fixed this class of problem at the time, but later work
      reintroduced several cases. (CVE-2025-8715)

    + Fix incorrect distance calculation in BRIN numeric_minmax_multi_ops
      support function (Peter Eisentraut, Tom Lane)

      The results were sometimes wrong on 64-bit platforms, and wildly wrong
      on 32-bit platforms. This did not produce obvious failures because the
      logic is only used to choose how to merge values into ranges; at worst
      the index would become inefficient and bloated. Nonetheless it's
      recommended to reindex any BRIN indexes that use the
      numeric_minmax_multi_ops operator class.

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-10.html.

  * d/postgresql-16.NEWS: Update.

  * d/p/hurd-iovec: drop patch applied upstream.

 -- Athos Ribeiro <athos.ribeiro@canonical.com>  Mon, 25 Aug 2025 17:36:09 -0300

postgresql-16 (16.9-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2110377).

    + A dump/restore is not required for those running 16.X.

    + However, if you have any self-referential foreign key constraints on
      partitioned tables, it may be necessary to recreate those constraints to
      ensure that they are being enforced correctly. Follow the steps below to
      do so.

    + Also, if you have any BRIN bloom indexes, it may be advisable to reindex
      them after updating. Follow the steps below to do so.

    + Also, if you are upgrading from a version earlier than 16.5, see those
      release notes as well please.

    + Avoid one-byte buffer overread when examining invalidly-encoded strings
      that are claimed to be in GB18030 encoding (Noah Misch, Andres Freund)

      While unlikely, a SIGSEGV crash could occur if an incomplete multibyte
      character appeared at the end of memory. This was possible both in the
      server and in libpq-using applications. (CVE-2025-4207)

    + Handle self-referential foreign keys on partitioned tables correctly
      (Álvaro Herrera)

      Creating or attaching partitions failed to make the required catalog
      entries for a foreign-key constraint, if the table referenced by the
      constraint was the same partitioned table. This resulted in failure to
      enforce the constraint fully.

      To fix this, you should drop and recreate any self-referential foreign
      keys on partitioned tables, if partitions have been created or attached
      since the constraint was created. Bear in mind that violating rows might
      already be present, in which case recreating the constraint will fail,
      and you'll need to fix up those rows before trying again.

    + Avoid data loss when merging compressed BRIN summaries in
      brin_bloom_union() (Tomas Vondra)

      The code failed to account for decompression results not being identical
      to the input objects, which would result in failure to add some of the
      data to the merged summary, leading to missed rows in index searches.

      This mistake was present back to v14 where BRIN bloom indexes were
      introduced, but this code path was only rarely reached then. It's
      substantially more likely to be hit in v17 because parallel index builds
      now use the code.

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-9.html.

  * d/postgresql-16.NEWS: Update.

 -- Athos Ribeiro <athos.ribeiro@canonical.com>  Sun, 11 May 2025 06:29:41 -0300

postgresql-16 (16.8-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2099900).

    + This release encompasses changes from upstream's 16.7 and 16.8
      releases.  The former contains fixes for CVE-2025-1094 (among other
      things), and the latter was a hotfix for a problem caused by the CVE
      fix from 16.7.

    + A dump/restore is not required for those running 16.X.

    + However, if you are upgrading from a version earlier than 16.5, see
      those release notes as well please.

    + Harden PQescapeString and allied functions against invalidly-encoded
      input strings (Andres Freund, Noah Misch)

      Data-quoting functions supplied by libpq now fully check the encoding
      validity of their input. If invalid characters are detected, they report
      an error if possible. For the ones that lack an error return convention,
      the output string is adjusted to ensure that the server will report
      invalid encoding and no intervening processing will be fooled by bytes
      that might happen to match single quote, backslash, etc.

      The purpose of this change is to guard against SQL-injection attacks
      that are possible if one of these functions is used to quote crafted
      input. There is no hazard when the resulting string is sent directly to
      a PostgreSQL server (which would check its encoding anyway), but there
      is a risk when it is passed through psql or other client-side code.
      Historically such code has not carefully vetted encoding, and in many
      cases it's not clear what it should do if it did detect such a problem.

      This fix is effective only if the data-quoting function, the server, and
      any intermediate processing agree on the character encoding that's being
      used. Applications that insert untrusted input into SQL commands should
      take special care to ensure that that's true.

      Applications and drivers that quote untrusted input without using these
      libpq functions may be at risk of similar problems. They should first
      confirm the data is valid in the encoding expected by the server.

      The PostgreSQL Project thanks Stephen Fewer for reporting this problem.
      (CVE-2025-1094)

    + Improve behavior of libpq's quoting functions (Andres Freund, Tom Lane)

      The changes made for CVE-2025-1094 had one serious oversight:
      PQescapeLiteral() and PQescapeIdentifier() failed to honor their string
      length parameter, instead always reading to the input string's trailing
      null. This resulted in including unwanted text in the output, if the
      caller intended to truncate the string via the length parameter. With
      very bad luck it could cause a crash due to reading off the end of
      memory.

      In addition, modify all these quoting functions so that when invalid
      encoding is detected, an invalid sequence is substituted for just the
      first byte of the presumed character, not all of it. This reduces the
      risk of problems if a calling application performs additional processing
      on the quoted string.

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-7.html and
      https://www.postgresql.org/docs/16/release-16-8.html.

  * d/postgresql-16.NEWS: Update.

 -- Athos Ribeiro <athos.ribeiro@canonical.com>  Mon, 24 Feb 2025 12:40:53 -0300

postgresql-16 (16.6-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2085196).

    + This release encompasses changes from upstream's 16.5 and 16.6
      releases.  The former contains fixes for 4 CVEs (among other
      things), and the latter was hotfix for a problem caused by one of
      the CVE fixes from 16.5.

    + A dump/restore is not required for those running 16.X.

    + However, if you are upgrading from a version earlier than 16.3, see
      those release notes as well please.

    + Ensure cached plans are marked as dependent on the calling role when
      RLS applies to a non-top-level table reference (Nathan Bossart)

      If a CTE, subquery, sublink, security invoker view, or coercion
      projection in a query references a table with row-level security
      policies, we neglected to mark the resulting plan as potentially
      dependent on which role is executing it.  This could lead to later query
      executions in the same session using the wrong plan, and then returning
      or hiding rows that should have been hidden or returned instead.

      The PostgreSQL Project thanks Wolfgang Walther for reporting this
      problem.
      (CVE-2024-10976)

    + Make libpq discard error messages
      received during SSL or GSS protocol negotiation (Jacob Champion)

      An error message received before encryption negotiation is completed
      might have been injected by a man-in-the-middle, rather than being real
      server output.  Reporting it opens the door to various security hazards;
      for example, the message might spoof a query result that a careless user
      could mistake for correct output.  The best answer seems to be to
      discard such data and rely only on libpq's own report of the connection
      failure.

      The PostgreSQL Project thanks Jacob Champion for reporting this
      problem.
      (CVE-2024-10977)

    + Fix unintended interactions between SET SESSION AUTHORIZATION
      and SET ROLE (Tom Lane)

      The SQL standard mandates that SET SESSION AUTHORIZATION have a
      side-effect of doing SET ROLE NONE.  Our implementation of that was
      flawed, creating more interaction between the two settings than
      intended.  Notably, rolling back a transaction that had done SET SESSION
      AUTHORIZATION would revert ROLE to NONE even if that had not been the
      previous state, so that the effective user ID might now be different
      from what it had been before the transaction.  Transiently setting
      session_authorization in a function SET clause had a similar effect.  A
      related bug was that if a parallel worker inspected
      current_setting('role'), it saw none even when it should see something
      else.

      The PostgreSQL Project thanks Tom Lane for reporting this problem.
      (CVE-2024-10978)

    + Prevent trusted PL/Perl code from changing environment variables
      (Andrew Dunstan, Noah Misch)

      The ability to manipulate process environment variables such as PATH
      gives an attacker opportunities to execute arbitrary code.  Therefore,
      trustedPLs must not offer the ability to do that.  To fix plperl,
      replace %ENV with a tied hash that rejects any modification attempt with
      a warning.  Untrusted plperlu retains the ability to change the
      environment.

      The PostgreSQL Project thanks Coby Abrams for reporting this problem.
      (CVE-2024-10979)

    + Restore functionality of ALTER {ROLE|DATABASE} SET
      role (Tom Lane, Noah Misch)

      The fix for CVE-2024-10978 accidentally caused settings for role to
      not be applied if they come from non-interactive sources, including
      previous ALTER {ROLE|DATABASE} commands and the PGOPTIONS environment
      variable.

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-5.html and
      https://www.postgresql.org/docs/16/release-16-6.html.

  * d/postgresql-16.NEWS: Update.

 -- Sergio Durigan Junior <sergio.durigan@canonical.com>  Mon, 25 Nov 2024 16:05:41 -0500

postgresql-16 (16.4-0ubuntu0.24.04.2) noble-proposed; urgency=medium

  * SRU: LP: #2076340: No-change rebuild to pick up changed build flags
    on ppc64 and s390x.

 -- Matthias Klose <doko@ubuntu.com>  Tue, 20 Aug 2024 12:27:30 +0200

postgresql-16 (16.4-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2076183).

    + A dump/restore is not required for those running 16.X.

    + However, if you are upgrading from a version earlier than 16.3, see
      those release notes as well please.

    + Prevent unauthorized code execution during pg_dump (Masahiko Sawada)

      An attacker able to create and drop non-temporary objects could inject
      SQL code that would be executed by a concurrent pg_dump session with the
      privileges of the role running pg_dump (which is often a superuser).
      The attack involves replacing a sequence or similar object with a view
      or foreign table that will execute malicious code.  To prevent this,
      introduce a new server parameter restrict_nonsystem_relation_kind that
      can disable expansion of non-builtin views as well as access to foreign
      tables, and teach pg_dump to set it when available.  Note that the
      attack is prevented only if both pg_dump and the server it is dumping
      from are new enough to have this fix.

      The PostgreSQL Project thanks Noah Misch for reporting this problem.
      (CVE-2024-7348)

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-4.html.

  * d/postgresql-16.NEWS: Update.

 -- Athos Ribeiro <athos.ribeiro@canonical.com>  Tue, 06 Aug 2024 15:13:57 -0300

postgresql-16 (16.3-0ubuntu0.24.04.1) noble-security; urgency=medium

  * New upstream version (LP: #2067388).

    + A dump/restore is not required for those running 16.X.

    + However, a security vulnerability was found in the system views
      pg_stats_ext and pg_stats_ext_exprs, potentially allowing
      authenticated database users to see data they shouldn't. If this is of
      concern in your installation, follow the steps below to rectify it.

    + Also, if you are upgrading from a version earlier than 16.2, see
      those release notes as well please.

    + Restrict visibility of pg_stats_ext and pg_stats_ext_exprs entries
      to the table owner (Nathan Bossart)

      These views failed to hide statistics for expressions that involve
      columns the accessing user does not have permission to read. View
      columns such as most_common_vals might expose security-relevant
      data. The potential interactions here are not fully clear, so in the
      interest of erring on the side of safety, make rows in these views
      visible only to the owner of the associated table.

      The PostgreSQL Project thanks Lukas Fittl for reporting this
      problem.

      By itself, this fix will only fix the behavior in newly initdb'd
      database clusters. If you wish to apply this change in an existing
      cluster, you will need to do the following:

        - In each database of the cluster, run the
          /usr/share/postgresql/16/fix-CVE-2024-4317.sql script as superuser. In
          psql this would look like:

            \i /usr/share/postgresql/16/fix-CVE-2024-4317.sql

          It will not hurt to run the script more than once.

        - Do not forget to include the template0 and template1 databases,
          or the vulnerability will still exist in databases you create
          later. To fix template0, you'll need to temporarily make it accept
          connections. Do that with:

            ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;

          and then after fixing template0, undo it with:

            ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;

      (CVE-2024-4317)

    + Details about these and many further changes can be found at:
      https://www.postgresql.org/docs/16/release-16-3.html.

  * d/postgresql-16.NEWS: Update.

 -- Sergio Durigan Junior <sergio.durigan@canonical.com>  Wed, 29 May 2024 13:16:10 -0400

postgresql-16 (16.2-1ubuntu4) noble; urgency=high

  * No change rebuild against libllvm17t64.

 -- Julian Andres Klode <juliank@ubuntu.com>  Mon, 08 Apr 2024 16:48:10 +0200

postgresql-16 (16.2-1ubuntu3) noble; urgency=medium

  * No-change rebuild for CVE-2024-3094

 -- Steve Langasek <steve.langasek@ubuntu.com>  Sun, 31 Mar 2024 00:13:40 +0000

postgresql-16 (16.2-1ubuntu2) noble; urgency=medium

  * No-change rebuild against libperl5.38t64

 -- Steve Langasek <steve.langasek@ubuntu.com>  Sat, 09 Mar 2024 18:23:15 +0000

postgresql-16 (16.2-1ubuntu1) noble; urgency=medium

  * d/control: Pin llvm-17 on Build-Depends.  The package currently
    FTBFS withg llvm-18.

 -- Sergio Durigan Junior <sergio.durigan@canonical.com>  Mon, 04 Mar 2024 14:56:24 -0500

postgresql-16 (16.2-1build1) noble; urgency=medium

  * No-change rebuild for perlapi5.38t64.

 -- Matthias Klose <doko@ubuntu.com>  Sun, 03 Mar 2024 05:34:54 +0100

postgresql-16 (16.2-1) unstable; urgency=medium

  * New upstream version.

    * Tighten security restrictions within REFRESH MATERIALIZED VIEW
      CONCURRENTLY (Heikki Linnakangas)

      One step of a concurrent refresh command was run under weak security
      restrictions.  If a materialized view's owner could persuade a superuser
      or other high-privileged user to perform a concurrent refresh on that
      view, the view's owner could control code executed with the privileges
      of the user running REFRESH. Fix things so that all user-determined code
      is run as the view's owner, as expected.

      The only known exploit for this error does not work in PostgreSQL 16.0
      and later, so it may be that v16 is not vulnerable in practice.

      The PostgreSQL Project thanks Pedro Gallegos for reporting this problem.
      (CVE-2024-0985)

  * Add Swedish debconf translation by Martin Bagge and Anders Jonsson.
    Thanks! (Closes: #1059170)

 -- Christoph Berg <myon@debian.org>  Tue, 06 Feb 2024 13:27:57 +0100

postgresql-16 (16.1-1) unstable; urgency=medium

  * New upstream version.

    * Fix handling of unknown-type arguments in DISTINCT "any" aggregate
      functions (Tom Lane)

      This error led to a text-type value being interpreted as an unknown-type
      value (that is, a zero-terminated string) at runtime.  This could result
      in disclosure of server memory following the text value.

      The PostgreSQL Project thanks Jingzhou Fu for reporting this problem.
      (CVE-2023-5868)

    * Detect integer overflow while computing new array dimensions
      (Tom Lane)

      When assigning new elements to array subscripts that are outside the
      current array bounds, an undetected integer overflow could occur in edge
      cases.  Memory stomps that are potentially exploitable for arbitrary
      code execution are possible, and so is disclosure of server memory.

      The PostgreSQL Project thanks Pedro Gallegos for reporting this problem.
      (CVE-2023-5869)

    * Prevent the pg_signal_backend role from signalling background workers
      and autovacuum processes (Noah Misch, Jelte Fennema-Nio)

      The documentation says that pg_signal_backend
      cannot issue signals to superuser-owned processes.  It was able to
      signal these background processes, though, because they advertise a
      role OID of zero.  Treat that as indicating superuser ownership.
      The security implications of cancelling one of these process types
      are fairly small so far as the core code goes (we'll just start
      another one), but extensions might add background workers that are
      more vulnerable.

      Also ensure that the is_superuser parameter is set correctly in such
      processes.  No specific security consequences are known for that
      oversight, but it might be significant for some extensions.

      The PostgreSQL Project thanks Hemanth Sandrana and Mahendrakar
      Srinivasarao for reporting this problem. (CVE-2023-5870)

    * Fix misbehavior during recursive page split in GiST index build
      (Heikki Linnakangas)

      Fix a case where the location of a page downlink was incorrectly
      tracked, and introduce some logic to allow recovering from such
      situations rather than silently doing the wrong thing.  This error could
      result in incorrect answers from subsequent index searches. It may be
      advisable to reindex all GiST indexes after installing this update.

    * Prevent de-duplication of btree index entries for interval columns

      There are interval values that are distinguishable but compare equal,
      for example 24:00:00 and 1 day.  This breaks assumptions made by btree
      de-duplication, so interval columns need to be excluded from
      de-duplication.  This oversight can cause incorrect results from
      index-only scans.  Moreover, after updating amcheck will report an error
      for almost all such indexes.  Users should reindex any btree indexes on
      interval columns.

  * Use default LLVM version; package is now compatible with LLVM 16.
  * Rebase debian/patches/libpgport-pkglibdir.

 -- Christoph Berg <myon@debian.org>  Tue, 07 Nov 2023 14:18:31 +0100

postgresql-16 (16.0-2) unstable; urgency=medium

  * Use LLVM 15 for JIT support, 16 is not supported yet. (Closes: #1051881)

 -- Christoph Berg <myon@debian.org>  Thu, 14 Sep 2023 09:13:57 +0200

postgresql-16 (16.0-1) unstable; urgency=medium

  * First PostgreSQL 16 release.

 -- Christoph Berg <myon@debian.org>  Mon, 11 Sep 2023 22:41:53 +0200

postgresql-16 (16~rc1-2) experimental; urgency=medium

  * Disable jit on loong64; PG does not support LLVM 16 yet while LLVM
    versions before 16 do not support loong64. (Closes: #1051385)
  * Introduce build profile pkg.postgresql.nolibpkgs.
  * Cherry-pick WIP patches to stabilize tests on s390x.

 -- Christoph Berg <myon@debian.org>  Thu, 07 Sep 2023 14:14:52 +0200

postgresql-16 (16~rc1-1) experimental; urgency=medium

  * New release candidate version.

 -- Christoph Berg <myon@debian.org>  Tue, 29 Aug 2023 15:58:19 +0200

postgresql-16 (16~beta3-1) experimental; urgency=medium

  * New beta version.
  * Bump postgresql-common dependency to 252, required for alternatives.
  * Test-Depend on tzdata-legacy | tzdata (<< 2023c-8).

 -- Christoph Berg <myon@debian.org>  Thu, 10 Aug 2023 13:57:07 +0200

postgresql-16 (16~beta2-1) experimental; urgency=medium

  * New beta version.

 -- Christoph Berg <myon@debian.org>  Wed, 28 Jun 2023 15:41:55 +0200

postgresql-16 (16~beta1-2) experimental; urgency=medium

  * Bump postgresql-common B-D to 250 to ignore test failures on alpha et al.
  * Define IOV_MAX on hurd-i386.

 -- Christoph Berg <myon@debian.org>  Wed, 24 May 2023 11:11:53 +0200

postgresql-16 (16~beta1-1) experimental; urgency=medium

  * New major upstream version 16; packaging based on postgresql-15.

 -- Christoph Berg <myon@debian.org>  Tue, 23 May 2023 14:05:19 +0200
