<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source, branch release-prep-2609a</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>VideoCommon: validate restored FIFO pointers</title>
<updated>2026-10-07T23:57:28+00:00</updated>
<author>
<name>Acts1631</name>
<email>acts1631kjv@proton.me</email>
</author>
<published>2026-10-04T20:34:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=2eea927e95a577fe90e98d756968111e296147a7'/>
<id>2eea927e95a577fe90e98d756968111e296147a7</id>
<content type='text'>
Save states restored video FIFO pointers from unchecked offsets. A
crafted offset could place a pointer outside its backing allocation and
turn the next gather-pipe copy into an out-of-bounds native write.

Require pointer offsets to stay within their backing array and reject a
state when either offset is invalid or the read pointer follows the write
pointer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Save states restored video FIFO pointers from unchecked offsets. A
crafted offset could place a pointer outside its backing allocation and
turn the next gather-pipe copy into an out-of-bounds native write.

Require pointer offsets to stay within their backing array and reject a
state when either offset is invalid or the read pointer follows the write
pointer.
</pre>
</div>
</content>
</entry>
<entry>
<title>NetPlay: reject oversized Wii save banners</title>
<updated>2026-10-07T23:57:19+00:00</updated>
<author>
<name>Acts1631</name>
<email>acts1631kjv@proton.me</email>
</author>
<published>2026-10-04T20:34:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=13817559eb47ce170b14fd232f9d5f468a5d70c9'/>
<id>13817559eb47ce170b14fd232f9d5f468a5d70c9</id>
<content type='text'>
The save sync parser preserved an oversized banner length after limiting
the copy into the fixed header buffer. The NAND writer then used the
untrusted length and read beyond the stack object.

Reject invalid or oversized lengths before copying the banner.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The save sync parser preserved an oversized banner length after limiting
the copy into the fixed header buffer. The NAND writer then used the
untrusted length and read beyond the stack object.

Reject invalid or oversized lengths before copying the banner.
</pre>
</div>
</content>
</entry>
<entry>
<title>Assembler: Fix crash from assembling malformed source</title>
<updated>2026-10-07T23:56:41+00:00</updated>
<author>
<name>VampireFlower</name>
<email>monstercatspedup1@gmail.com</email>
</author>
<published>2026-09-30T10:04:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=c129fd7aac603a0d59d9cabd19c215cf6a38ddf9'/>
<id>c129fd7aac603a0d59d9cabd19c215cf6a38ddf9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>MemArenaDarwin: Eliminate use of mach_make_memory_entry_64</title>
<updated>2026-10-07T23:56:25+00:00</updated>
<author>
<name>OatmealDome</name>
<email>julian@oatmealdome.me</email>
</author>
<published>2026-09-27T17:47:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=4a4c71d2e59c0c1066c43da6889b89e2e43d9df8'/>
<id>4a4c71d2e59c0c1066c43da6889b89e2e43d9df8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>NetPlayConfigLoader: Fix GCAdapter handling.</title>
<updated>2026-10-07T23:56:14+00:00</updated>
<author>
<name>Jordan Woyak</name>
<email>jordan.woyak@gmail.com</email>
</author>
<published>2026-09-29T01:37:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=e992141a21dd41a0b28d23e341adb59fc5dc8b79'/>
<id>e992141a21dd41a0b28d23e341adb59fc5dc8b79</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>NetPlay: reject oversized input buffer messages</title>
<updated>2026-10-07T23:56:01+00:00</updated>
<author>
<name>Acts1631</name>
<email>acts1631kjv@proton.me</email>
</author>
<published>2026-08-04T15:47:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=a5c88ec00e7c4063dfe76c6695876de98f68f399'/>
<id>a5c88ec00e7c4063dfe76c6695876de98f68f399</id>
<content type='text'>
A NetPlay host could send an arbitrary buffer size to a client. The
client then tried to allocate input states until it reached that value.

Limit buffer sizes to the existing user-interface maximum. Invalid peer
values are ignored.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A NetPlay host could send an arbitrary buffer size to a client. The
client then tried to allocate input states until it reached that value.

Limit buffer sizes to the existing user-interface maximum. Invalid peer
values are ignored.
</pre>
</div>
</content>
</entry>
<entry>
<title>Request ACCESS_LOCAL_NETWORK permission on android 17 and up</title>
<updated>2026-10-07T23:55:50+00:00</updated>
<author>
<name>Tom Pratt</name>
<email>tom.pratt@outlook.com</email>
</author>
<published>2026-09-26T20:45:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b5ded04314feafe27ebcc8db4557d697192be3ea'/>
<id>b5ded04314feafe27ebcc8db4557d697192be3ea</id>
<content type='text'>
Show the permission dialog the first time host or connect is clicked.

While the permission is not granted, show an info box at the bottom of the netplay setup screen explaining the need for the permission with a button to grant permission. Launch the app settings menu where the permission can be granted manually if the user has denied twice previously preventing us from showing the permission dialog.

Workarounds using the shouldShowRationale flag and detecting if the dialog showed via onPause to account for well known limitations in the android permissions API.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Show the permission dialog the first time host or connect is clicked.

While the permission is not granted, show an info box at the bottom of the netplay setup screen explaining the need for the permission with a button to grant permission. Launch the app settings menu where the permission can be granted manually if the user has denied twice previously preventing us from showing the permission dialog.

Workarounds using the shouldShowRationale flag and detecting if the dialog showed via onPause to account for well known limitations in the android permissions API.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix android settings crash on API level 28 and lower</title>
<updated>2026-10-07T23:55:28+00:00</updated>
<author>
<name>Tom Pratt</name>
<email>tom.pratt@outlook.com</email>
</author>
<published>2026-09-27T19:04:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=5b295d55879734ed7be312dc009596f4ce961848'/>
<id>5b295d55879734ed7be312dc009596f4ce961848</id>
<content type='text'>
These API levels don't allow color selectors to be used as backgrounds.

Switch to MaterialDivider and set the color via dividerColor instead of background.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These API levels don't allow color selectors to be used as backgrounds.

Switch to MaterialDivider and set the color via dividerColor instead of background.
</pre>
</div>
</content>
</entry>
<entry>
<title>Android: Set abiFilters for ndk</title>
<updated>2026-10-07T23:55:11+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-09-27T18:39:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=17f057ebd8deec5a3f958f26f4f6e2d36b03fc09'/>
<id>17f057ebd8deec5a3f958f26f4f6e2d36b03fc09</id>
<content type='text'>
Normally, Dolphin APKs have a lib folder that contains two subfolders:
arm64-v8a and x86_64. Both contain a libmain.so file, and arm64-v8a also
contains additional .so files for libadrenotools.

When we added netplay support for Android, we brought in Jetpack Compose
as a dependency, which in turn made libandroidx.graphics.path.so be
included in Dolphin APKs. Unfortunately, this .so file was included not
only for arm64-v8a and x86_64, but also for armeabi-v7a and x86. This
made Dolphin installable on devices that use one of these older ABIs,
but because libmain.so is missing, trying to start Dolphin on such a
device results in an instant crash. We have gotten a number of Google
Play reviews from armeabi-v7a users complaining about this crash.

This fixes the problem by setting abiFilters under ndk instead of under
cmake, as documented at https://developer.android.com/ndk/guides/abis.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Normally, Dolphin APKs have a lib folder that contains two subfolders:
arm64-v8a and x86_64. Both contain a libmain.so file, and arm64-v8a also
contains additional .so files for libadrenotools.

When we added netplay support for Android, we brought in Jetpack Compose
as a dependency, which in turn made libandroidx.graphics.path.so be
included in Dolphin APKs. Unfortunately, this .so file was included not
only for arm64-v8a and x86_64, but also for armeabi-v7a and x86. This
made Dolphin installable on devices that use one of these older ABIs,
but because libmain.so is missing, trying to start Dolphin on such a
device results in an instant crash. We have gotten a number of Google
Play reviews from armeabi-v7a users complaining about this crash.

This fixes the problem by setting abiFilters under ndk instead of under
cmake, as documented at https://developer.android.com/ndk/guides/abis.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #14883 from AdmiralCurtiss/zelda-hle-voice-flags</title>
<updated>2026-09-21T16:23:48+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2026-09-21T16:23:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=4619af1be06fb6ccb0499083848bc9ee0d8afc3b'/>
<id>4619af1be06fb6ccb0499083848bc9ee0d8afc3b</id>
<content type='text'>
DSPHLE/Zelda: Add bounds check for m_sync_voice_skip_flags in RenderAudio()</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
DSPHLE/Zelda: Add bounds check for m_sync_voice_skip_flags in RenderAudio()</pre>
</div>
</content>
</entry>
</feed>
