Your message dated Sat, 11 Jul 2026 10:42:31 +0000
with message-id <[email protected]>
and subject line Released in 12.15
has caused the Debian Bug report #1126798,
regarding bookworm-pu: package phpunit/9.6.7-1+deb12u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1126798: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1126798
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: bookworm
X-Debbugs-Cc: [email protected]
Control: affects -1 + src:phpunit
User: [email protected]
Usertags: pu

[ This is the counterpart of #1126796 for trixie ] 

Hi,

As agreed with the security team, I’d like to get CVE-2026-24765 fixed
via a point release.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

Thanks in advance for considering.

Regards,

taffit
diff -Nru phpunit-9.6.7/debian/changelog phpunit-9.6.7/debian/changelog
--- phpunit-9.6.7/debian/changelog	2023-04-15 08:00:46.000000000 +0200
+++ phpunit-9.6.7/debian/changelog	2026-01-29 08:02:08.000000000 +0100
@@ -1,3 +1,11 @@
+phpunit (9.6.7-1+deb12u1) bookworm; urgency=medium
+
+  * Track debian/bookworm-security
+  * Fix Unsafe Deserialization in PHPT Code Coverage Handling [CVE-2026-24765]
+  * Workaround empty file not added by patch
+
+ -- David Prévot <[email protected]>  Thu, 29 Jan 2026 08:02:08 +0100
+
 phpunit (9.6.7-1) unstable; urgency=medium
 
   [ Sebastian Bergmann ]
diff -Nru phpunit-9.6.7/debian/clean phpunit-9.6.7/debian/clean
--- phpunit-9.6.7/debian/clean	2022-06-18 15:37:38.000000000 +0200
+++ phpunit-9.6.7/debian/clean	2026-01-29 08:02:08.000000000 +0100
@@ -8,6 +8,7 @@
 tests/_files/.phpunit.result.cache
 tests/_files/*/.phpunit.result.cache
 tests/basic/.phpunit.result.cache
+tests/end-to-end/_files/phpt-coverage-file-exists/test.coverage
 tests/end-to-end/force-covers-annotation/.phpunit.result.cache
 tests/end-to-end/*/*/.phpunit.result.cache
 tests/end-to-end/regression/GitHub/*/.phpunit.result.cache
diff -Nru phpunit-9.6.7/debian/control phpunit-9.6.7/debian/control
--- phpunit-9.6.7/debian/control	2023-03-30 07:29:42.000000000 +0200
+++ phpunit-9.6.7/debian/control	2026-01-29 08:02:08.000000000 +0100
@@ -28,7 +28,7 @@
                pkg-php-tools (>= 1.41~)
 Standards-Version: 4.6.2
 Rules-Requires-Root: no
-Vcs-Git: https://salsa.debian.org/php-team/pear/phpunit.git -b debian/bookworm
+Vcs-Git: https://salsa.debian.org/php-team/pear/phpunit.git -b debian/bookworm-security
 Vcs-Browser: https://salsa.debian.org/php-team/pear/phpunit
 Homepage: https://phpunit.de/
 
diff -Nru phpunit-9.6.7/debian/gbp.conf phpunit-9.6.7/debian/gbp.conf
--- phpunit-9.6.7/debian/gbp.conf	2023-03-30 07:29:42.000000000 +0200
+++ phpunit-9.6.7/debian/gbp.conf	2026-01-29 08:02:08.000000000 +0100
@@ -1,5 +1,5 @@
 [DEFAULT]
-debian-branch = debian/bookworm
+debian-branch = debian/bookworm-security
 filter = [ '.gitattributes', 'tools' ]
 pristine-tar = True
 upstream-branch = upstream-9
diff -Nru phpunit-9.6.7/debian/patches/0004-Do-not-run-PHPT-test-when-its-temporary-file-for-cod.patch phpunit-9.6.7/debian/patches/0004-Do-not-run-PHPT-test-when-its-temporary-file-for-cod.patch
--- phpunit-9.6.7/debian/patches/0004-Do-not-run-PHPT-test-when-its-temporary-file-for-cod.patch	1970-01-01 01:00:00.000000000 +0100
+++ phpunit-9.6.7/debian/patches/0004-Do-not-run-PHPT-test-when-its-temporary-file-for-cod.patch	2026-01-29 08:02:08.000000000 +0100
@@ -0,0 +1,142 @@
+From: Sebastian Bergmann <[email protected]>
+Date: Mon, 26 Jan 2026 17:37:32 +0100
+Subject: Do not run PHPT test when its temporary file for code coverage
+ information exists
+
+Origin: backport, https://github.com/sebastianbergmann/phpunit/commit/3141742e00620e2968d3d2e732d320de76685fda
+Bug: https://github.com/sebastianbergmann/phpunit/security/advisories/GHSA-vvj3-c3rp-c85p
+Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2026-24765
+---
+ src/Runner/PhptTestCase.php                        | 57 ++++++++++++++++++----
+ .../_files/phpt-coverage-file-exists/test.coverage |  0
+ .../_files/phpt-coverage-file-exists/test.phpt     |  7 +++
+ .../end-to-end/phpt/phpt-coverage-file-exists.phpt | 13 +++++
+ 4 files changed, 67 insertions(+), 10 deletions(-)
+ create mode 100644 tests/end-to-end/_files/phpt-coverage-file-exists/test.coverage
+ create mode 100644 tests/end-to-end/_files/phpt-coverage-file-exists/test.phpt
+ create mode 100644 tests/end-to-end/phpt/phpt-coverage-file-exists.phpt
+
+diff --git a/src/Runner/PhptTestCase.php b/src/Runner/PhptTestCase.php
+index 6590102..c9edd42 100644
+--- a/src/Runner/PhptTestCase.php
++++ b/src/Runner/PhptTestCase.php
+@@ -19,6 +19,7 @@ use function dirname;
+ use function explode;
+ use function extension_loaded;
+ use function file;
++use function file_exists;
+ use function file_get_contents;
+ use function file_put_contents;
+ use function is_array;
+@@ -87,17 +88,13 @@ final class PhptTestCase implements Reorderable, SelfDescribing, Test
+      */
+     public function __construct(string $filename, AbstractPhpProcess $phpUtil = null)
+     {
+-        if (!is_file($filename)) {
+-            throw new Exception(
+-                sprintf(
+-                    'File "%s" does not exist.',
+-                    $filename
+-                )
+-            );
+-        }
++        $this->ensureFileExists($filename);
+ 
+         $this->filename = $filename;
+-        $this->phpUtil  = $phpUtil ?: AbstractPhpProcess::factory();
++
++        $this->ensureCoverageFileDoesNotExist();
++
++        $this->phpUtil = $phpUtil ?: AbstractPhpProcess::factory();
+     }
+ 
+     /**
+@@ -655,7 +652,14 @@ final class PhptTestCase implements Reorderable, SelfDescribing, Test
+             $buffer = @file_get_contents($files['coverage']);
+ 
+             if ($buffer !== false) {
+-                $coverage = @unserialize($buffer);
++                $coverage = @unserialize(
++                    $buffer,
++                    [
++                        'allowed_classes' => [
++                            RawCodeCoverageData::class,
++                        ],
++                    ],
++                );
+ 
+                 if ($coverage === false) {
+                     $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]);
+@@ -861,4 +865,37 @@ final class PhptTestCase implements Reorderable, SelfDescribing, Test
+ 
+         return $settings;
+     }
++
++    /**
++     * @throws Exception
++     */
++    private function ensureFileExists(string $filename): void
++    {
++        if (!is_file($filename)) {
++            throw new Exception(
++                sprintf(
++                    'File "%s" does not exist.',
++                    $filename,
++                ),
++            );
++        }
++    }
++
++    /**
++     * @throws Exception
++     */
++    private function ensureCoverageFileDoesNotExist(): void
++    {
++        $files = $this->getCoverageFiles();
++
++        if (file_exists($files['coverage'])) {
++            throw new Exception(
++                sprintf(
++                    'File %s exists, PHPT test %s will not be executed',
++                    $files['coverage'],
++                    $this->filename,
++                ),
++            );
++        }
++    }
+ }
+diff --git a/tests/end-to-end/_files/phpt-coverage-file-exists/test.coverage b/tests/end-to-end/_files/phpt-coverage-file-exists/test.coverage
+new file mode 100644
+index 0000000..e69de29
+diff --git a/tests/end-to-end/_files/phpt-coverage-file-exists/test.phpt b/tests/end-to-end/_files/phpt-coverage-file-exists/test.phpt
+new file mode 100644
+index 0000000..0a5b252
+--- /dev/null
++++ b/tests/end-to-end/_files/phpt-coverage-file-exists/test.phpt
+@@ -0,0 +1,7 @@
++--TEST--
++test
++--FILE--
++<?php declare(strict_types=1);
++print 'test';
++--EXPECT--
++test
+diff --git a/tests/end-to-end/phpt/phpt-coverage-file-exists.phpt b/tests/end-to-end/phpt/phpt-coverage-file-exists.phpt
+new file mode 100644
+index 0000000..c05438b
+--- /dev/null
++++ b/tests/end-to-end/phpt/phpt-coverage-file-exists.phpt
+@@ -0,0 +1,13 @@
++--TEST--
++Error when code coverage file exists
++--FILE--
++<?php declare(strict_types=1);
++$_SERVER['argv'][] = '--do-not-cache-result';
++$_SERVER['argv'][] = '--no-configuration';
++$_SERVER['argv'][] = \realpath(__DIR__ . '/../_files/phpt-coverage-file-exists/test.phpt');
++
++require_once __DIR__ . '/../../bootstrap.php';
++
++PHPUnit\TextUI\Command::main();
++--EXPECTF--
++Fatal error: Uncaught PHPUnit\Runner\Exception: File %stest.coverage exists, PHPT test %stest.phpt will not be executed%A
diff -Nru phpunit-9.6.7/debian/patches/series phpunit-9.6.7/debian/patches/series
--- phpunit-9.6.7/debian/patches/series	2023-04-15 07:58:07.000000000 +0200
+++ phpunit-9.6.7/debian/patches/series	2026-01-29 08:02:08.000000000 +0100
@@ -1,3 +1,4 @@
 0001-Remove-Composer-autoload.patch
 0002-schema-is-installed-in-usr-share-php-data-PHPUnit.patch
 0003-Default-cache-location-to-current-directory.patch
+0004-Do-not-run-PHPT-test-when-its-temporary-file-for-cod.patch
diff -Nru phpunit-9.6.7/debian/rules phpunit-9.6.7/debian/rules
--- phpunit-9.6.7/debian/rules	2023-03-30 07:29:42.000000000 +0200
+++ phpunit-9.6.7/debian/rules	2026-01-29 08:02:08.000000000 +0100
@@ -35,6 +35,9 @@
 	# Mimic phpunit.xsd path
 	ln -s .. data/PHPUnit
 
+	# Workaround empty file not added by patch
+	touch tests/end-to-end/_files/phpt-coverage-file-exists/test.coverage
+
 override_dh_auto_clean:
 
 override_dh_auto_test:
diff -Nru phpunit-9.6.7/debian/tests/control phpunit-9.6.7/debian/tests/control
--- phpunit-9.6.7/debian/tests/control	2023-03-30 07:29:42.000000000 +0200
+++ phpunit-9.6.7/debian/tests/control	2026-01-29 08:02:08.000000000 +0100
@@ -1,3 +1,3 @@
-Test-Command: mkdir -p vendor && phpabtpl --require phpunit/phpunit --require-file ../tests/_files/CoverageNamespacedFunctionTest.php --require-file ../tests/_files/CoveredFunction.php --require-file ../tests/_files/NamespaceCoveredFunction.php > debian/autoload.tests.php.tpl && phpab --output vendor/autoload.php --template debian/autoload.tests.php.tpl --exclude tests/end-to-end/migration/_files/possibility-to-migrate-from-92-is-detected/src/Greeter.php --exclude tests/end-to-end/migration/_files/possibility-to-migrate-from-92-is-detected/tests/GreeterTest.php --exclude tests/end-to-end/regression/2448/Test.php --exclude tests/end-to-end/regression/4376/tests/Test.php tests && phpunit
+Test-Command: mkdir -p vendor && phpabtpl --require phpunit/phpunit --require-file ../tests/_files/CoverageNamespacedFunctionTest.php --require-file ../tests/_files/CoveredFunction.php --require-file ../tests/_files/NamespaceCoveredFunction.php > debian/autoload.tests.php.tpl && phpab --output vendor/autoload.php --template debian/autoload.tests.php.tpl --exclude tests/end-to-end/migration/_files/possibility-to-migrate-from-92-is-detected/src/Greeter.php --exclude tests/end-to-end/migration/_files/possibility-to-migrate-from-92-is-detected/tests/GreeterTest.php --exclude tests/end-to-end/regression/2448/Test.php --exclude tests/end-to-end/regression/4376/tests/Test.php tests && touch tests/end-to-end/_files/phpt-coverage-file-exists/test.coverage && phpunit
 Restrictions: rw-build-tree, allow-stderr
 Depends: php-soap, phpab, pkg-php-tools (>= 1.41~), @

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Version: 12.15

This update was released as part of 12.15.

--- End Message ---

Reply via email to