Skip to content

Commit 721731a

Browse files
committed
hsmd: refactor hsmd_init
Remove preapprove_check capabilities by selecting WIRE_HSMD_PREAPPROVE_INCOICE_CHECK and WIRE_HSMD_PREAPPROVE_KEYSEND_CHECK from capabilities array instead of assuming those occupy the last two slots in the array. Changelog-None Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
1 parent 5cfad6b commit 721731a

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

hsmd/libhsmd.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2337,7 +2337,7 @@ u8 *hsmd_init(struct secret hsm_secret, const u64 hsmd_version,
23372337
WIRE_HSMD_PREAPPROVE_INVOICE_CHECK,
23382338
WIRE_HSMD_PREAPPROVE_KEYSEND_CHECK,
23392339
};
2340-
const u32 *caps;
2340+
u32 *caps;
23412341

23422342
/*~ Don't swap this. */
23432343
sodium_mlock(secretstuff.hsm_secret.data,
@@ -2460,14 +2460,18 @@ u8 *hsmd_init(struct secret hsm_secret, const u64 hsmd_version,
24602460
"derived secrets", strlen("derived secrets"));
24612461

24622462
/* Capabilities arg needs to be a tal array */
2463-
if (dev_no_preapprove_check) {
2464-
/* Skip preapprove capabilities */
2465-
caps = tal_dup_arr(tmpctx, u32,
2466-
capabilities, ARRAY_SIZE(capabilities) - 2,
2467-
0);
2468-
} else {
2469-
caps = tal_dup_arr(tmpctx, u32,
2470-
capabilities, ARRAY_SIZE(capabilities), 0);
2463+
caps = tal_arr(tmpctx, u32, 0);
2464+
for (size_t i = 0; i < ARRAY_SIZE(capabilities); i++) {
2465+
switch (capabilities[i]) {
2466+
case WIRE_HSMD_PREAPPROVE_INVOICE_CHECK:
2467+
case WIRE_HSMD_PREAPPROVE_KEYSEND_CHECK:
2468+
if (!dev_no_preapprove_check)
2469+
tal_arr_expand(&caps, capabilities[i]);
2470+
/* else: Skip preapprove capabilities */
2471+
break;
2472+
default:
2473+
tal_arr_expand(&caps, capabilities[i]);
2474+
}
24712475
}
24722476

24732477
/*~ Note: marshalling a bip32 tree only marshals the public side,

0 commit comments

Comments
 (0)