---
id: CVE-2026-119280
aliases:
  - GHSA-4jq2-8v3c-97w8
title: >-
  MariaDB Connector/J: XA recover() trusted server-supplied gtrid and bqual
  lengths
summary: >-
  MariaDB Connector/J: XA recover() trusted server-supplied gtrid and bqual
  lengths
severity: low
cvss: 3.7
cwe:
  - CWE-20
  - CWE-789
vendor: mariadb
product: 'org.mariadb.jdbc:mariadb-java-client'
ecosystem: maven
affected:
  - 'org.mariadb.jdbc:mariadb-java-client >= 3.0.0, < 3.3.7'
  - 'org.mariadb.jdbc:mariadb-java-client >= 3.4.0, < 3.4.5'
  - 'org.mariadb.jdbc:mariadb-java-client >= 3.5.0, < 3.5.11'
patched:
  - 'org.mariadb.jdbc:mariadb-java-client 3.3.7'
  - 'org.mariadb.jdbc:mariadb-java-client 3.4.5'
  - 'org.mariadb.jdbc:mariadb-java-client 3.5.11'
published: '2026-10-30'
updated: '2026-10-30'
sourceUpdated: '2026-10-30T23:00:03Z'
source: GHSA
sourceUrl: 'https://github.com/advisories/GHSA-4jq2-8v3c-97w8'
references:
  - url: >-
      https://github.com/mariadb-corporation/mariadb-connector-j/security/advisories/GHSA-4jq2-8v3c-97w8
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-119280'
  - url: >-
      https://github.com/mariadb-corporation/mariadb-connector-j/commit/280efcfb4390055858fa2dd12b722d85a6a13ab8
  - url: >-
      https://github.com/mariadb-corporation/mariadb-connector-j/commit/47aba5a23548b35191865a428cc674316b95ee47
  - url: >-
      https://github.com/mariadb-corporation/mariadb-connector-j/commit/e9d767103bfd178ed57caa4cb97bbfbf7e54da6b
  - url: >-
      https://github.com/mariadb-corporation/mariadb-connector-j/releases/tag/3.3.7
  - url: >-
      https://github.com/mariadb-corporation/mariadb-connector-j/releases/tag/3.4.5
  - url: >-
      https://github.com/mariadb-corporation/mariadb-connector-j/releases/tag/3.5.11
  - url: 'https://github.com/advisories/GHSA-4jq2-8v3c-97w8'
tags:
  - ghsa
  - maven
epss: 0.00306
epssPercentile: 0.23394
ingestedAt: '2026-10-30T23:11:25.781Z'
---

## Overview

## Summary

`XAResource.recover()` in MariaDB Connector/J trusted the `gtrid_length` and
`bqual_length` columns returned by `XA RECOVER` to allocate and split each Xid.

## Details

`MariaDbPoolConnection` and `MariaDbPoolPinnedConnection` built each `Xid` of
the recovery list by allocating `new byte[gtrid_length]` and
`new byte[bqual_length]` and copying from the `data` column, without validating
the lengths against the XA specification bounds (`Xid.MAXGTRIDSIZE`,
`Xid.MAXBQUALSIZE`) or the actual payload. Negative or oversized lengths, or
lengths that do not fit the data, ended in large allocations or unchecked
exceptions (`NegativeArraySizeException`, `ArrayIndexOutOfBoundsException`)
during recovery.

The fix validates the lengths before any allocation or copy and reports an
invalid row as an `XAException` (`XAER_RMFAIL`).

## Impact

Availability only, and limited to applications running XA recovery: a malicious
or compromised server, or a MitM, can crash the recovery or drive large
allocations. Exploitation requires control of the server side of the connection.

## Credit

Reported by fg0x0

## Affected packages

- `org.mariadb.jdbc:mariadb-java-client >= 3.0.0, < 3.3.7`
- `org.mariadb.jdbc:mariadb-java-client >= 3.4.0, < 3.4.5`
- `org.mariadb.jdbc:mariadb-java-client >= 3.5.0, < 3.5.11`

## Remediation

Upgrade to a patched release:

- `org.mariadb.jdbc:mariadb-java-client 3.3.7`
- `org.mariadb.jdbc:mariadb-java-client 3.4.5`
- `org.mariadb.jdbc:mariadb-java-client 3.5.11`
