commit 28fae882d0faad31948be1fcadd7041f44b9da2e
parent ce3280d636edd0d0e60c67b6561492261bc86ef3
Author: Marc Stibane <marc@taler.net>
Date: Fri, 14 Aug 2026 11:57:31 +0200
AI: fix clampedData
Diffstat:
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) {