taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 784250423cb120d85142337e0588bacf3fdd8255
parent c098e7187a7e3cfe8ae3641744a5638a00b59b0f
Author: Florian Dold <dold@taler.net>
Date:   Thu, 20 Aug 2026 19:06:41 +0200

wallet-core: reject malformed transaction identifiers

Diffstat:
Mpackages/taler-wallet-core/src/transactions.test.ts | 5+++++
Mpackages/taler-wallet-core/src/transactions.ts | 5++++-
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/packages/taler-wallet-core/src/transactions.test.ts b/packages/taler-wallet-core/src/transactions.test.ts @@ -58,5 +58,10 @@ test("a malformed transaction identifier is rejected", (t) => { // an exception or a missing value. assert.strictEqual(parseTransactionIdentifier("txn:deposit"), undefined); assert.strictEqual(parseTransactionIdentifier("nottxn:deposit:x"), undefined); + assert.strictEqual(parseTransactionIdentifier("txn:payment:"), undefined); + assert.strictEqual( + parseTransactionIdentifier("txn:payment:proposal:trailing"), + undefined, + ); assert.strictEqual(parseTransactionIdentifier(""), undefined); }); diff --git a/packages/taler-wallet-core/src/transactions.ts b/packages/taler-wallet-core/src/transactions.ts @@ -789,7 +789,7 @@ export function parseTransactionIdentifier( ): ParsedTransactionIdentifier | undefined { const txnParts = transactionId.split(":"); - if (txnParts.length < 3) { + if (txnParts.length !== 3) { return undefined; } @@ -798,6 +798,9 @@ export function parseTransactionIdentifier( if (prefix != "txn") { return undefined; } + if (!rest[0]) { + return undefined; + } switch (type) { case TransactionType.Deposit: