postgresql-15 (15.19-0+deb12u1) bookworm-security; urgency=medium

  * New upstream version 15.19.

    + Restrict logical decoding output plugins to the set specified by
      a new server parameter `output_plugin_libraries` (Jacob
      Champion)

      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, for
      example

      output_plugin_libraries = 'pgoutput, test_decoding, my_trusted_decoder'

      Additionally, pg_upgrade --check will fail if the
      `output_plugin_libraries` parameter on the new cluster does not
      permit the plugins of logical replication slots on the old
      cluster, when migrating from versions 17 and later. Make
      necessary additions to the new cluster's setting before
      performing pg_upgrade.

      The PostgreSQL Project thanks Vladimir Tokarev and Yu Kunpeng
      for reporting this problem. (CVE-2026-6471)

    + Fix contrib/pgcrypto's PGP encryption to detect unsupported
      ciphers (Daniel Gustafsson)

      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:

      pgp_sym_decrypt(encrypted_column, any key, 'ignore-cipher-failure=1')

      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`.

      The PostgreSQL Project thanks Shishir Sharma for reporting this
      problem. (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` (Tom Lane)

      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.

      The PostgreSQL Project thanks Alexander Lakhin for reporting
      this problem. (CVE-2026-6464)

    + Cross-check the output row type of a portal running EXECUTE or
      FETCH (Robert Haas)

      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.

      The PostgreSQL Project thanks Ben Morris (in collaboration with
      Claude and Anthropic Research) and Peter Geoghegan for reporting
      this problem. (CVE-2026-16239)

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

      This can easily crash the server, and exploits leading to
      arbitrary code execution have been reported.

      The PostgreSQL Project thanks Hcamael, Amjad Shahzad, Tan Zhen
      of AntAISecurityLab, Tomer Fichman, Zheng Yu, Amy Burnett
      (OpenAI Codex Security), Rick de Jager, Heewon Song, Sylvie
      Mayer, Aleksander Alekseev, and Hillai Ben Sasson for reporting
      this problem. (CVE-2026-14669)

    + Fix buffer overrun in regexp match/split functions (Masahiko
      Sawada)

      If passed invalidly-encoded data, these functions could write
      past the end of their conversion buffer.

      The PostgreSQL Project thanks Francesco Verardi for reporting
      this problem. (CVE-2026-14664)

    + Harden the ascii() function against invalid input (Michael
      Paquier)

      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.

      The PostgreSQL Project thanks Hcamael for reporting this
      problem. (CVE-2026-18024)

    + Fix multirange type handling in pg_restore_attribute_stats()
      (OpenAI Security Research Team)

      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.

      The PostgreSQL Project thanks Amy Burnett (OpenAI Codex
      Security) for reporting this problem. (CVE-2026-16238)

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

      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.

      The PostgreSQL Project thanks Hcamael for reporting this
      problem. (CVE-2026-14668)

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

      The documented limits were not enforced in all code paths.

      The PostgreSQL Project thanks Yuhang Wu, Zhenpeng Lin, Zheng Yu,
      and Hcamael for reporting these problems. (CVE-2026-14662)

    + Fix various places that mistakenly assumed they would not have
      to deal with more than `FUNC_MAX_ARGS` function arguments (Tom
      Lane)

      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.

      The PostgreSQL Project thanks Zheng Yu, ylwangtju, and Masahiko
      Sawada for reporting these problems. (CVE-2026-14679)

    + Reject calls from SQL to functions that take or return type
      internal (Tom Lane)

      The existing defenses against doing this have been shown to be
      insufficient, so add more explicit checks.

      The PostgreSQL Project thanks Amy Burnett (OpenAI Codex
      Security) for reporting this problem. (CVE-2026-14680)

    + Preserve the ownership of extended statistics objects when they
      are rebuilt by ALTER TABLE (Masahiko Sawada)

      Previously, the role running ALTER TABLE gained ownership of
      such objects, but that seems inappropriate.

      The PostgreSQL Project thanks Noah Misch for reporting this
      problem. (CVE-2026-6469)

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

      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.

      The PostgreSQL Project thanks Ben Morris (in collaboration with
      Claude and Anthropic Research) for reporting this problem.
      (CVE-2026-15741)

    + Check for `USAGE` privilege on data types in places that
      formerly failed to check that (Nathan Bossart)

      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.

      The PostgreSQL Project thanks Jingzhou Fu for reporting this
      problem. (CVE-2026-6470)

    + Invalidate role-dependent cached plans after role changes (Ilya
      Staroverov, Shinya Kato, Nathan Bossart)

      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.

      The PostgreSQL Project thanks Ilya Staroverov and Shinya Kato
      for reporting this problem. (CVE-2026-14666)

    + Reject GSSEncRequest after direct SSL connection (Michael
      Paquier)

      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.

      The PostgreSQL Project thanks p4p3r for reporting this problem.
      (CVE-2026-14681)

    + Make mock SCRAM authentication secrets more plausible (Nathan
      Bossart)

      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.

      The PostgreSQL Project thanks Radim Marek for reporting this
      problem. (CVE-2026-14672)

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

      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.

      The PostgreSQL Project thanks ylwangtju for reporting this
      problem. (CVE-2026-16241)

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

      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.

      The PostgreSQL Project thanks Lucas Velgus, Filip Janus, and
      Daniel Bakker for reporting this problem. (CVE-2026-18408)

    + Remove pg_dump's assumption that pg_proc.protrftypes cannot have
      more than `FUNC_MAX_ARGS` entries (Tom Lane)

      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.

      The PostgreSQL Project thanks Masahiko Sawada for reporting this
      problem. (CVE-2026-19385)

    + Harden PL/Perl against "tied" Perl arrays and hashes (Tom Lane)

      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).

      The PostgreSQL Project thanks Hcamael for reporting this
      problem. (CVE-2026-14670)

    + Fix integer overflows in memory-allocation calculations in
      PL/Perl and PL/Tcl (Heikki Linnakangas)

      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.

      The PostgreSQL Project thanks the Tulya Project (Team Dhiutsa,
      Bitecope Technologies Private Ltd) for reporting this problem.
      (CVE-2026-14677)

    + Ensure that contrib/amcheck functions restrict `search_path`
      before executing index expressions (Noah Misch)

      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.

      The PostgreSQL Project thanks Yuelin Wang and Jacob Brazeal for
      reporting this problem. (CVE-2026-14673)

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

      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.

      The PostgreSQL Project thanks Ben Morris (in collaboration with
      Claude and Anthropic Research) for reporting this problem.
      (CVE-2026-15742)

    + Fix buffer overrun in contrib/pg_stat_statements (Álvaro
      Herrera)

      Query normalization didn't accurately account for the amount of
      space the normalized string would require.

      The PostgreSQL Project thanks Sajeeb Lohani (with TrendAI Zero
      Day Initiative) and Yuelin Wang for reporting this problem.
      (CVE-2026-14676)

    + Fix datatype error in contrib/pg_trgm's GiST picksplit function
      (Heikki Linnakangas)

      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.

      The PostgreSQL Project thanks Mehmet D. Ince for reporting this
      problem. (CVE-2026-14678)

    + Remove the plan cache in contrib/refint (Ayush Tiwari)

      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.

      The PostgreSQL Project thanks Hcamael for reporting this
      problem. (CVE-2026-14671)

  * Fix psql -c 'truncate/create table; copy from stdin'.

 -- Christoph Berg <myon@debian.org>  Tue, 11 Aug 2026 23:41:23 +0200

postgresql-15 (15.18-0+deb12u1) bookworm-security; urgency=medium

  * New upstream version 15.18.

    + Prevent unbounded recursion while processing startup packets
      (Michael Paquier)

      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
      (Tom Lane, Nathan Bossart, Heikki Linnakangas)

      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.

      The PostgreSQL Project thanks Xint Code, Bruce Dang, Sven Klemm, and
      Pavel Kohout for reporting these problems. (CVE-2026-6473)

    + Reject over-length options in ts_headline() (Michael Paquier)

      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.

      The PostgreSQL Project thanks Xint Code for reporting this problem.
      (CVE-2026-6473)

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

      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().

      The PostgreSQL Project thanks Xint Code for reporting this problem.
      (CVE-2026-6474)

    + When creating a multirange type, ensure the user has CREATE privilege on
      the schema specified for the multirange type (Jelte Fennema-Nio)

      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.

      The PostgreSQL Project thanks Jelte Fennema-Nio for reporting this
      problem. (CVE-2026-6472)

    + Use timing-safe string comparisons in authentication code
      (Michael Paquier)

      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.

      The PostgreSQL Project thanks Joe Conway for reporting this problem.
      (CVE-2026-6478)

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

      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.

      The PostgreSQL Project thanks Yu Kunpeng and Martin Heistermann for
      reporting this problem. (CVE-2026-6477)

    + Prevent path traversal in pg_basebackup and pg_rewind (Michael Paquier)

      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.

      The PostgreSQL Project thanks XlabAI Team of Tencent Xuanwu Lab and
      Valery Gubanov for reporting this problem. (CVE-2026-6475)

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

      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.

      The PostgreSQL Project thanks Xint Code for reporting this problem.
      (CVE-2026-6473)

    + Guard against overly long values of contrib/ltree's lquery type
      (Michael Paquier)

      Values with more than 64K items caused internal overflows, potentially
      resulting in stack smashes or wrong answers.

      The PostgreSQL Project thanks Vergissmeinnicht, A1ex, and Jihe Wang for
      reporting this problem. (CVE-2026-6473)

    + Prevent SQL injection and buffer overruns in contrib/spi
      (Nathan Bossart)

      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.

      The PostgreSQL Project thanks Nikolay Samokhvalov for reporting this
      problem. (CVE-2026-6637)

 -- Christoph Berg <myon@debian.org>  Tue, 12 May 2026 12:51:10 +0200

postgresql-15 (15.17-0+deb12u1) bookworm; urgency=medium

  * New upstream version 15.17.

    + Fix failure after replaying a multixid truncation record from WAL that
      was generated by an older minor version (Heikki Linnakangas)

      Erroneous logic for coping with the way that previous versions handled
      multixid wraparound led to replay failure, with messages like "could not
      access status of transaction". A typical scenario in which this could
      occur is a standby server of the latest minor version consuming WAL from
      a primary server of an older version.

    + Avoid incorrect complaint of invalid encoding when substring() is
      applied to toasted data (Noah Misch)

      The fix for CVE-2026-2006 was too aggressive and could raise an error
      about an incomplete character in cases that are actually valid.

 -- Christoph Berg <myon@debian.org>  Tue, 24 Feb 2026 12:48:56 +0100

postgresql-15 (15.16-0+deb12u1) bookworm-security; urgency=medium

  * New upstream version 15.16.

    + 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.

      The PostgreSQL Project thanks Altan Birler for reporting this problem.
      (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.

      The PostgreSQL Project thanks Daniel Firer, as part of zeroday.cloud,
      for reporting this problem. (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.

      The PostgreSQL Project thanks Team Xint Code, as part of zeroday.cloud,
      for reporting this problem. (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.

      The PostgreSQL Project thanks Paul Gerste and Moritz Sanft, as part of
      zeroday.cloud, for reporting this problem. (CVE-2026-2006)

 -- Christoph Berg <myon@debian.org>  Tue, 10 Feb 2026 11:50:28 +0100

postgresql-15 (15.15-0+deb12u1) bookworm; urgency=medium

  * New upstream version 15.15.

    + 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.

      The PostgreSQL Project thanks Jelte Fennema-Nio for reporting this
      problem. (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.

      The PostgreSQL Project thanks Aleksey Solovev of Positive Technologies
      for reporting this problem. (CVE-2025-12818)

 -- Christoph Berg <myon@debian.org>  Thu, 25 Dec 2025 19:08:36 +0100

postgresql-15 (15.14-0+deb12u1) bookworm; urgency=medium

  * New upstream version 15.14.

    + 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.

      The PostgreSQL Project thanks Dean Rasheed for reporting this problem.
      (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.

      The PostgreSQL Project thanks Martin Rakhmanov, Matthieu Denais, and
      RyotaK for reporting this problem. (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.

      The PostgreSQL Project thanks Noah Misch for reporting this problem.
      (CVE-2025-8715)

 -- Christoph Berg <myon@debian.org>  Wed, 13 Aug 2025 20:13:29 +0200

postgresql-15 (15.13-0+deb12u1) bookworm; urgency=medium

  * New upstream version 15.13.

    + 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)

 -- Christoph Berg <myon@debian.org>  Tue, 06 May 2025 17:55:19 +0200

postgresql-15 (15.12-0+deb12u2) bookworm; urgency=medium

  * Grab base.tar.zst from failing 010_client_untar test on mipsel.

 -- Christoph Berg <myon@debian.org>  Thu, 06 Mar 2025 11:38:37 +0100

postgresql-15 (15.12-0+deb12u1) bookworm; urgency=medium

  * New upstream version 15.12.

    + 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.

 -- Christoph Berg <myon@debian.org>  Tue, 18 Feb 2025 11:59:37 +0100

postgresql-15 (15.11-0+deb12u1) bookworm; urgency=medium

  * New upstream version 15.11.

    + 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)

 -- Christoph Berg <myon@debian.org>  Tue, 11 Feb 2025 11:27:41 +0100

postgresql-15 (15.10-0+deb12u1) bookworm-security; urgency=medium

  * New upstream version 15.10.

    + Repair ABI break for extensions that work with struct ResultRelInfo

      Last week's minor releases unintentionally broke binary compatibility
      with timescaledb and several other extensions.  Restore the affected
      structure to its previous size, so that such extensions need not be
      rebuilt.

    + Restore functionality of ALTER {ROLE|DATABASE} SET role

      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.

 -- Christoph Berg <myon@debian.org>  Tue, 19 Nov 2024 15:36:12 +0100

postgresql-15 (15.9-0+deb12u1) bookworm-security; urgency=medium

  * New upstream version 15.9.

    + 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,
      trusted PLs 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)

 -- Christoph Berg <myon@debian.org>  Tue, 12 Nov 2024 15:06:10 +0100

postgresql-15 (15.8-0+deb12u1) bookworm-security; urgency=medium

  * New upstream version.

    + 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)

    * Refresh debian/patches/focal-arm64-outline-atomics.

 -- Christoph Berg <myon@debian.org>  Wed, 07 Aug 2024 15:24:37 +0200

postgresql-15 (15.7-0+deb12u1) bookworm; urgency=medium

  * New upstream version.

    + 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.
      (CVE-2024-4317)

      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 fix-CVE-2024-4317.sql script
        as superuser. In psql this would look like
          \i /usr/share/postgresql/15/fix-CVE-2024-4317.sql
        Any error probably indicates that you've used the wrong script
        version.  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;

 -- Christoph Berg <myon@debian.org>  Tue, 07 May 2024 11:24:26 +0200

postgresql-15 (15.6-0+deb12u1) bookworm-security; 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 PostgreSQL Project thanks Pedro Gallegos for reporting this problem.
      (CVE-2024-0985)

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

postgresql-15 (15.5-0+deb12u1) bookworm-security; 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.

  * Rebase debian/patches/libpgport-pkglibdir.

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

postgresql-15 (15.4-0+deb12u1) bookworm; urgency=medium

  * New upstream version.

    + Disallow substituting a schema or owner name into an extension script if
      the name contains a quote, backslash, or dollar sign (Noah Misch)
      This restriction guards against SQL-injection hazards for trusted
      extensions.
      The PostgreSQL Project thanks Micah Gate, Valerie Woolard, Tim
      Carey-Smith, and Christoph Berg for reporting this problem.
      (CVE-2023-39417)

    + Fix MERGE to enforce row security policies properly (Dean Rasheed)
      When MERGE performs an UPDATE action, it should enforce any UPDATE or
      SELECT RLS policies defined on the target table, to be consistent with
      the way that a plain UPDATE with a WHERE clause works.  Instead it was
      enforcing INSERT RLS policies for both INSERT and UPDATE actions.
      In addition, when MERGE performs a DO NOTHING action, it applied the
      target table's DELETE RLS policies to existing rows, even though those
      rows are not being deleted.  While it's not a security problem, this
      could result in unwanted errors.
      The PostgreSQL Project thanks Dean Rasheed for reporting this problem.
      (CVE-2023-39418)

 -- Christoph Berg <myon@debian.org>  Sun, 01 Oct 2023 21:50:06 +0200

postgresql-15 (15.3-0+deb12u1) unstable; urgency=medium

  * New upstream version.

    + Prevent CREATE SCHEMA from defeating changes in search_path
      (Report and fix by Alexander Lakhin, CVE-2023-2454)

      Within a CREATE SCHEMA command, objects in the prevailing search_path,
      as well as those in the newly-created schema, would be visible even
      within a called function or script that attempted to set a secure
      search_path.  This could allow any user having permission to create a
      schema to hijack the privileges of a security definer function or
      extension script.

    + Enforce row-level security policies correctly after inlining a
      set-returning function (Report by Wolfgang Walther, CVE-2023-2455)

      If a set-returning SQL-language function refers to a table having
      row-level security policies, and it can be inlined into a calling query,
      those RLS policies would not get enforced properly in some cases
      involving re-using a cached plan under a different role. This could
      allow a user to see or modify rows that should have been invisible.

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

postgresql-15 (15.2-2) unstable; urgency=medium

  * Add Romanian debconf translation, mulțumesc Remus-Gabriel Chelu!
  * Fix update-alternatives when doc package is installed stand-alone.

 -- Christoph Berg <myon@debian.org>  Mon, 27 Feb 2023 10:30:23 +0100

postgresql-15 (15.2-1) unstable; urgency=medium

  * New upstream version.

    + libpq can leak memory contents after GSSAPI transport encryption
      initiation fails (Jacob Champion)

      A modified server, or an unauthenticated man-in-the-middle, can send a
      not-zero-terminated error message during setup of GSSAPI (Kerberos)
      transport encryption.  libpq will then copy that string, as well as
      following bytes in application memory up to the next zero byte, to its
      error report. Depending on what the calling application does with the
      error report, this could result in disclosure of application memory
      contents.  There is also a small probability of a crash due to reading
      beyond the end of memory.  Fix by properly zero-terminating the server
      message. (CVE-2022-41862)

 -- Christoph Berg <myon@debian.org>  Tue, 07 Feb 2023 14:57:10 +0100

postgresql-15 (15.1-1) unstable; urgency=medium

  * New upstream version.

 -- Christoph Berg <myon@debian.org>  Tue, 08 Nov 2022 10:59:12 +0100

postgresql-15 (15.0-2) unstable; urgency=medium

  * Add Breaks on dbconfig-common (<< 2.0.22~) which doesn't support the
    stricter permissions on the default public schema yet.
  * Cherry-pick 4a6de748d3 from upstream to help fix #1021859.
  * Mark -doc package as <!nodoc>.

 -- Christoph Berg <myon@debian.org>  Mon, 24 Oct 2022 11:30:00 +0200

postgresql-15 (15.0-1) unstable; urgency=medium

  * New upstream version.

 -- Christoph Berg <myon@debian.org>  Fri, 14 Oct 2022 10:36:49 +0200

postgresql-15 (15~rc2-1) unstable; urgency=medium

  [ Christoph Berg ]
  * New upstream RC version.

  [ Petter Jacobsen ]
  * Add . to extension_destdir description.

 -- Christoph Berg <myon@debian.org>  Thu, 06 Oct 2022 14:06:05 +0200

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

  * New upstream RC version.

 -- Christoph Berg <myon@debian.org>  Tue, 27 Sep 2022 11:31:54 +0200

postgresql-15 (15~beta4-1) experimental; urgency=medium

  * New upstream beta version.
  * Add Italian debconf translation by Ceppo, thanks! (Closes: #1019162)

 -- Christoph Berg <myon@debian.org>  Tue, 06 Sep 2022 11:44:55 +0200

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

  * New upstream beta version.
  * debian/copyright: Update src/backend/regex section.
  * Update lintian overrides.

 -- Christoph Berg <myon@debian.org>  Wed, 10 Aug 2022 14:33:48 +0200

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

  * New upstream beta version.
  * Depend on postgresql-common >= 241.
  * Disable LLVM JIT on s390x for now. (See #1002029)

 -- Christoph Berg <myon@debian.org>  Tue, 28 Jun 2022 18:20:44 +0200

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

  * New major upstream version 15; packaging based on postgresql-14.
  * configure.ac: Remove check for autoconf 2.69.

 -- Christoph Berg <myon@debian.org>  Wed, 18 May 2022 16:26:02 +0200
