<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/DiscIO, branch release-prep-2606a</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>GCZ: use 64-bit for m_data_offset</title>
<updated>2026-08-10T21:50:27+00:00</updated>
<author>
<name>Scott Mansell</name>
<email>phiren@gmail.com</email>
</author>
<published>2026-07-26T10:22:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b6d8da24b3d023c2a49498ab48b73258807ef688'/>
<id>b6d8da24b3d023c2a49498ab48b73258807ef688</id>
<content type='text'>
A malicious GCZ file could probably force this to be negative.
Shouldn't cause any issues other than file read failures, but need to fix
because it is causing errors on MSVC.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A malicious GCZ file could probably force this to be negative.
Shouldn't cause any issues other than file read failures, but need to fix
because it is causing errors on MSVC.
</pre>
</div>
</content>
</entry>
<entry>
<title>GCZ: validate while loading</title>
<updated>2026-08-10T21:50:26+00:00</updated>
<author>
<name>Scott Mansell</name>
<email>phiren@gmail.com</email>
</author>
<published>2026-07-26T08:20:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=4eb90c7314bed84a007ef2ec6fa9c0e35b5d72d1'/>
<id>4eb90c7314bed84a007ef2ec6fa9c0e35b5d72d1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>GCZ: Don't trust block_num either</title>
<updated>2026-08-10T21:50:26+00:00</updated>
<author>
<name>Scott Mansell</name>
<email>phiren@gmail.com</email>
</author>
<published>2026-07-26T06:15:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=8f1e33a5f47dc350dc32f168252ecb2eba9ed2a2'/>
<id>8f1e33a5f47dc350dc32f168252ecb2eba9ed2a2</id>
<content type='text'>
SectorReader::ReadChunk does do some validation on it, but it only
checks against the original disc size (reported by the GCZ file).
It has no idea how many blocks the header claimed the disc had.

A maliciously crafted GCZ file could trigger read overflows off the end
of the m_block_pointers/m_hashes arrays.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SectorReader::ReadChunk does do some validation on it, but it only
checks against the original disc size (reported by the GCZ file).
It has no idea how many blocks the header claimed the disc had.

A maliciously crafted GCZ file could trigger read overflows off the end
of the m_block_pointers/m_hashes arrays.
</pre>
</div>
</content>
</entry>
<entry>
<title>GCZ: Don't trust GetBlockCompressedSize</title>
<updated>2026-08-10T21:50:26+00:00</updated>
<author>
<name>Scott Mansell</name>
<email>phiren@gmail.com</email>
</author>
<published>2026-07-26T06:13:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=2f5232fbf4c6b5856523e69b0634e36715981716'/>
<id>2f5232fbf4c6b5856523e69b0634e36715981716</id>
<content type='text'>
It comes unverified from the file, and a maliciously crafted file could
trigger not one, but two buffer overflows in the heap.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It comes unverified from the file, and a maliciously crafted file could
trigger not one, but two buffer overflows in the heap.
</pre>
</div>
</content>
</entry>
<entry>
<title>VolumeVerifier: Remove SystemNotAvailable</title>
<updated>2026-06-22T06:36:50+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-06-22T06:34:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=53dad6f23012babf65a52764715cdf7fc5f0638c'/>
<id>53dad6f23012babf65a52764715cdf7fc5f0638c</id>
<content type='text'>
We had some code in VolumeVerifier to catch the error message that
Redump.org used to show when trying to access the Wii datfile without
logging in. This restriction was removed from Redump.org around the
start of 2022, and the code has been unnecessary ever since.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We had some code in VolumeVerifier to catch the error message that
Redump.org used to show when trying to access the Wii datfile without
logging in. This restriction was removed from Redump.org around the
start of 2022, and the code has been unnecessary ever since.
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't send Dolphin version in user agent to Redump</title>
<updated>2026-06-22T06:36:44+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-06-22T06:29:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=47040a183428e8e6e2a5c8c28d8aa0b4d632d1cd'/>
<id>47040a183428e8e6e2a5c8c28d8aa0b4d632d1cd</id>
<content type='text'>
When we added the RetroAchievements integration, we had a discussion
about whether sending version information in the user agent was fine
from a privacy standpoint. We reached the conclusion that it was okay,
but it was conditional on the website having a privacy policy. Neither
incarnation of Redump has that, and Redump also never asked us to send
version information like RetroAchievements did, so let's use a user
agent that just says "Dolphin" when connecting to Redump.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we added the RetroAchievements integration, we had a discussion
about whether sending version information in the user agent was fine
from a privacy standpoint. We reached the conclusion that it was okay,
but it was conditional on the website having a privacy policy. Neither
incarnation of Redump has that, and Redump also never asked us to send
version information like RetroAchievements did, so let's use a user
agent that just says "Dolphin" when connecting to Redump.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use redump.info instead of redump.org</title>
<updated>2026-06-22T06:28:51+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-06-22T06:24:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=d202fd07d2a0a244fa43941fd80ec9aa4fa05476'/>
<id>d202fd07d2a0a244fa43941fd80ec9aa4fa05476</id>
<content type='text'>
All the staff of Redump (except the absentee sysadmin) have decided to
start a new version of the website at redump.info. It has every disc
from the old site, it has HTTPS, it isn't buckling under the load of AI
scrapers, and moving forward, all adding and verifying of discs is going
to be happening on the new website only. Let's move over.

I've taken the unusual step of updating the translation files manually.
This is because we're very close to a release and because the change is
simple enough that I feel confident about making the change to languages
I don't speak. (I double checked that the Korean translation doesn't
ever follow "Redump.org" by a particle that has a different form
depending on whether there's a final consonant.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All the staff of Redump (except the absentee sysadmin) have decided to
start a new version of the website at redump.info. It has every disc
from the old site, it has HTTPS, it isn't buckling under the load of AI
scrapers, and moving forward, all adding and verifying of discs is going
to be happening on the new website only. Let's move over.

I've taken the unusual step of updating the translation files manually.
This is because we're very close to a release and because the change is
simple enough that I feel confident about making the change to languages
I don't speak. (I double checked that the Korean translation doesn't
ever follow "Redump.org" by a particle that has a different form
depending on whether there's a final consonant.)
</pre>
</div>
</content>
</entry>
<entry>
<title>NANDImporter: Abort extraction if a NAND FST entry is visited more than once</title>
<updated>2026-06-04T16:48:19+00:00</updated>
<author>
<name>Admiral H. Curtiss</name>
<email>pikachu025@gmail.com</email>
</author>
<published>2026-06-04T15:41:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=29f1bc4d4c079610b3c9c83930733df856c6f61f'/>
<id>29f1bc4d4c079610b3c9c83930733df856c6f61f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Prevent path traversal in NANDImporter::ProcessEntry</title>
<updated>2026-05-30T09:51:14+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-05-30T09:28:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=2faa9760d3e689ceb5b92f71e29a4a869b9f50f9'/>
<id>2faa9760d3e689ceb5b92f71e29a4a869b9f50f9</id>
<content type='text'>
Reported by MrSynAckster. A specifically crafted NAND dump could use
path traversal to overwrite files on the host file system.

This is also an accuracy fix for importing NAND dumps that contain
file names that Dolphin is supposed to escape. Some games' save files
are affected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reported by MrSynAckster. A specifically crafted NAND dump could use
path traversal to overwrite files on the host file system.

This is also an accuracy fix for importing NAND dumps that contain
file names that Dolphin is supposed to escape. Some games' save files
are affected.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rework NANDImporter::GetPath slash handling</title>
<updated>2026-05-30T09:51:14+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-05-30T09:26:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=3abadcd5071ea1acbc5748deb57f21b03c7c5536'/>
<id>3abadcd5071ea1acbc5748deb57f21b03c7c5536</id>
<content type='text'>
GetPath has two special cases where it doesn't add a slash.

The first is for the root entry's special name "/". The next commit will
be neater if we can skip calling GetPath for the root entry, because '/'
is one of the characters that Common::EscapeFileName replaces with an
escape sequence. Let's check for entry number 0 instead.

The second is for parent paths that already end in a slash. There's no
actual need to check for this - double slashes are harmless, and for
comparison, NANDImporter::ExtractCertificates already appends slashes
without checking if there already is one. Let's remove this check.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
GetPath has two special cases where it doesn't add a slash.

The first is for the root entry's special name "/". The next commit will
be neater if we can skip calling GetPath for the root entry, because '/'
is one of the characters that Common::EscapeFileName replaces with an
escape sequence. Let's check for entry number 0 instead.

The second is for parent paths that already end in a slash. There's no
actual need to check for this - double slashes are harmless, and for
comparison, NANDImporter::ExtractCertificates already appends slashes
without checking if there already is one. Let's remove this check.
</pre>
</div>
</content>
</entry>
</feed>
