On Passport Core v2.3.11, importing a multisig wallet whose wallet name contains Korean/Unicode characters fails when saving the multisig configuration.
Changing only the multisig wallet name from Korean to ASCII makes the exact same multisig import succeed.
multisig settings.save() exception:
Traceback (most recent call last):
File "tasks/save_multisig_wallet_task.py", line 34, in save_multisig_wallet_task
File "ext_settings.py", line 402, in save
File "ext_settings.py", line 396, in internal_save
File "ext_settings.py", line 410, in do_save
File "ext_settings.py", line 455, in save_impl
File "sffile.py", line 104, in write
AssertionError:
### Expected Behavior
Unicode wallet names should either:
save correctly using the actual serialized byte length, or
be rejected/normalized before saving with a clear validation error.
The error should not be reported as user-settings storage exhaustion.
### Please provide the steps that you've used to reproduce the issue
1. Create a 2-of-3 multisig wallet in Nunchuk.
2. Set the wallet name to a Korean/Unicode name (for example, "비트코인 금고").
3. Export the multisig wallet configuration as a QR code.
4. Scan/import the QR code on Passport Core v2.3.11.
5. Review the multisig configuration and confirm saving it.
6. Passport fails with: "Out of space in user settings. Too many multisig configs?"
7. Change only the Nunchuk wallet name to an ASCII-only name such as "vault-2of3".
8. Export a new QR code and import it again.
9. The multisig configuration saves successfully.
### Steps Taken to Resolve
I first confirmed there were no existing multisig configurations and that normal Passport settings could still be saved.
I also erased/restored the Passport and reproduced the same issue.
To identify the real exception, I built a diagnostic firmware from the exact v2.3.11 source which logs the exception raised by settings.save().
The traceback was:
Traceback (most recent call last):
File "tasks/save_multisig_wallet_task.py", line 34, in save_multisig_wallet_task
File "ext_settings.py", line 402, in save
File "ext_settings.py", line 396, in internal_save
File "ext_settings.py", line 410, in do_save
File "ext_settings.py", line 455, in save_impl
File "sffile.py", line 104, in write
AssertionError:
Changing only the multisig wallet name from Korean/Unicode to ASCII fixed the problem immediately.
### If applicable, add screenshots or screen recordings to help explain the issue.
_No response_
### Anything else?
The failure appears to be caused by a Unicode byte-length calculation issue in ExtSettings.save_impl().
The code uses:
data_len = len(d)
pad_len = self.max_json_len - data_len
For a Unicode Python string, len(d) can count characters rather than the number of UTF-8 bytes actually written to flash.
Korean characters require multiple UTF-8 bytes. This can cause excessive padding to be written, so the final 32-byte encrypted digest exceeds the SFFile max_size and triggers the assertion in sffile.py.
The exception is then caught by save_multisig_wallet_task() and reported to the user as USER_SETTINGS_FULL, which results in the misleading "Out of space in user settings" message.
Workaround: use an ASCII-only multisig wallet name.
No seed words, private keys, xprvs, wallet QR data, or xpubs are included in this report.
### Impact of the issue
{"label" => "Medium: Moderate issue affecting usability."}
### If you found any similar or related issues, provide links to them here.
None found.
The current firmware version on your Passport.
2.3.11
Passport Model
Passport Founders Edition
Software Wallet Details
Summary
On Passport Core v2.3.11, importing a multisig wallet whose wallet name contains Korean/Unicode characters fails when saving the multisig configuration.
Passport displays:
However, the actual exception is an
AssertionErrorinsffile.pywhile writing the final settings checksum.Changing only the multisig wallet name from Korean to ASCII makes the exact same multisig import succeed.
Environment
Reproduction
Create a 2-of-3 multisig wallet in Nunchuk.
Give the wallet a Korean/Unicode name.
Export/import the multisig configuration via QR.
Passport parses and reviews the multisig successfully.
Confirm saving the wallet.
Passport reports:
Out of space in user settings. Too many multisig configs?Change only the wallet name to an ASCII-only name such as:
vault-2of3Export a new QR and import it again.
The multisig saves successfully.
Actual exception
I built a v2.3.11 diagnostic firmware that records the exception raised by
settings.save().The resulting traceback is: