From b1fe2cca261c67721c1d36d87ffa3540ef2e375c Mon Sep 17 00:00:00 2001 From: scgbckbone Date: Wed, 24 Dec 2025 17:28:54 +0100 Subject: [PATCH] bugfix: fwd slash in multisig name caused export to yikes. Replace fwd slash with dash in export filenames --- releases/Next-ChangeLog.md | 1 + shared/multisig.py | 3 ++- testing/test_multisig.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/releases/Next-ChangeLog.md b/releases/Next-ChangeLog.md index 9367453a..140fc78e 100644 --- a/releases/Next-ChangeLog.md +++ b/releases/Next-ChangeLog.md @@ -9,6 +9,7 @@ This lists the new changes that have not yet been published in a normal release. - New Feature: Support for v3 transactions - New Feature: Send keystrokes with all derived BIP-85 secrets - Enhancement: CCC allow to reset block height +- Bugfix: Replace `/` with `-` in exported file names of multisig wallet export artifacts # Mk4 Specific Changes diff --git a/shared/multisig.py b/shared/multisig.py index 1934e76e..42e5a977 100644 --- a/shared/multisig.py +++ b/shared/multisig.py @@ -865,7 +865,8 @@ class MultisigWallet(WalletABC): def make_fname(self, prefix, suffix='txt'): rv = '%s-%s.%s' % (prefix, self.name, suffix) - return rv.replace(' ', '_') + rv = rv.replace(' ', '_') + return rv.replace('/', '-') async def export_electrum(self): # Generate and save an Electrum JSON file. diff --git a/testing/test_multisig.py b/testing/test_multisig.py index 49d87e36..a3f4ce3c 100644 --- a/testing/test_multisig.py +++ b/testing/test_multisig.py @@ -4175,4 +4175,33 @@ def test_af_matching_convoluted_case(af, psbt_v2, clear_ms, fake_ms_txn, import_ assert len(po.inputs[0].part_sigs) == 0 # considered not ours assert len(po.inputs[1].part_sigs) == 1 # signature added + +def test_fwd_slash_in_name(import_ms_wallet, clear_ms, pick_menu_item, need_keypress, cap_story, + press_cancel, garbage_collector, microsd_path): + clear_ms() + name = "2/3 me/her/it" + import_ms_wallet(2,3, "p2wsh", name=name, accept=True) + pick_menu_item("Settings") + pick_menu_item("Multisig Wallets") + pick_menu_item(f"2/3: {name}") + pick_menu_item("Coldcard Export") + need_keypress("1") # SD + time.sleep(.1) + title, story = cap_story() + fname = story.split("\n\n")[1] + garbage_collector.append(microsd_path(fname)) + assert fname.strip().startswith("export-2-3_me-her-it") + press_cancel() + press_cancel() + pick_menu_item("Descriptors") + pick_menu_item("Export") + need_keypress("1") # SD + time.sleep(.1) + title, story = cap_story() + fname = story.split("\n\n")[1] + garbage_collector.append(microsd_path(fname)) + assert fname.strip().startswith("desc-2-3_me-her-it") + press_cancel() + press_cancel() + # EOF