taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 28fae882d0faad31948be1fcadd7041f44b9da2e
parent ce3280d636edd0d0e60c67b6561492261bc86ef3
Author: Marc Stibane <marc@taler.net>
Date:   Fri, 14 Aug 2026 11:57:31 +0200

AI: fix clampedData

Diffstat:
MTalerWallet1/Helper/Data+fromUInt8Array.swift | 13+++++++------
1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/TalerWallet1/Helper/Data+fromUInt8Array.swift b/TalerWallet1/Helper/Data+fromUInt8Array.swift @@ -24,12 +24,13 @@ extension Data { } static func clampedData(_ data: Data, offset: UInt, size: UInt) -> Data { - let endIndex = UInt(data.endIndex) - let start = UInt(data.startIndex) + offset - let start2 = Swift.min(start, endIndex-1) - let end = start2 + size - let end2 = Swift.min(end, endIndex) - return data[start2..<end2] + let count = UInt(data.count) + // an offset at or past the end must yield nothing - clamping it to the last byte + // would silently return unrelated data, and for empty data the clamp underflows + guard offset < count else { return Data() } + let start = data.startIndex + Int(offset) + let end = start + Int(Swift.min(size, count - offset)) + return data[start..<end] } mutating func append(data: Data, offset: UInt, size: UInt) {